ฉันมีข้อมูลโมเดลสภาพอากาศจำนวนมากถูกใส่ลงในฐานข้อมูล PostgreSQL เครื่องมี 8 คอร์และ RAM 16 GB ฉันใช้ PostgreSQL 9.3 กับ PostGIS 2.1 แต่ละตารางจะมีข้อมูลสภาพอากาศที่แตกต่างกัน (อุณหภูมิจุดน้ำค้างลม ฯลฯ ) แต่ละตารางจะมีคอลัมน์ 6-7 คอลัมน์: ละติจูดลองจิจูดลองจิจูดเรขาคณิตระดับความสูงวันที่และเวลาที่แบบจำลองนั้นเกี่ยวข้องและค่าข้อมูลที่น่าสนใจ 1-2 รายการ ข้อมูลจะถูกสอบถามเป็นหลักสำหรับกล่อง bounding ตามเวลาและระดับความสูง จะมีประมาณ 145,757,360 แถวต่อตาราง (ข้อมูลที่เก่ากว่าตอนนี้จะไม่ถูกลบอีกต่อไป) ฉันประมาณขนาดของตารางโดยประมาณประมาณ 10 GB โดยไม่มีดัชนี (นั่นคือข้อมูล 52 ไบต์บวก 23 ไบต์ค่าใช้จ่ายต่อแถว) ข้อมูลจะถูกอัปเดต / แทรกเป็นประจำเมื่อมีข้อมูลโมเดลใหม่ บันทึก:
ดังนั้นฉันดูที่แผนสองข้อนี้:
- เพียงจัดทำดัชนีและจัดกลุ่มตาม (วันที่และเวลา, ระดับความสูง) พร้อมดัชนีเพิ่มเติมสำหรับรูปทรงเรขาคณิตของจุด รันงาน cron ปกติที่ลบแถวเก่ารันสุญญากาศ / วิเคราะห์และคลัสเตอร์อีกครั้ง
- แบ่งพาร์ติชันตามวันที่และเวลาจากนั้นจัดกลุ่มและจัดทำดัชนีตามระดับความสูงต่อตารางด้วยดัชนีบนรูปทรงเรขาคณิต รันงาน cron ปกติเพื่อเพิ่มตารางใหม่ในอนาคตและวางตารางเก่า
เพิ่มเติม
- ดังนั้นฉันรู้ว่าการวางโต๊ะมีประสิทธิภาพมากขึ้นการลบและการดูดฝุ่น แต่ฉันจะเห็นการเพิ่มประสิทธิภาพเป็นอย่างอื่นได้หรือไม่
- พาร์ติชั่นเหมาะสมหรือไม่เมื่อตารางทั้งหมดจะได้รับการปรับปรุงและเลือกอย่างต่อเนื่องจนกว่าจะถูกลบออกไปโดยไม่เกี่ยวข้อง (เอกสารระบุว่าพาร์ทิชันทำงานได้ดีที่สุดเมื่อเลือกเพียงไม่กี่ตัว)?
เมื่อส่งข้อมูลการเลือกจะเร็วกว่าดัชนีคลัสเตอร์หรือไม่ คำตอบเปลี่ยนไปหรือไม่หากมีการร้องขอหลายครั้งพร้อมกัน?
ขอขอบคุณ. ฉันหวังว่าจะรวบรวมข้อมูลที่จำเป็นทั้งหมด ถ้าไม่แจ้งให้เราทราบและฉันจะเพิ่ม
xmin
หรือxmax
อื่น ๆ มีคุณสมบัติที่อาจทำให้เป็น 9.4 ที่อาจทำให้คุณตื่นเต้นซึ่งเรียกว่าดัชนี minmax ซึ่งจะทำให้สิ่งต่าง ๆ เช่นนี้สะดวกยิ่งขึ้น