10 คะแนน โดย xguru 2021-05-12 | 3 ความคิดเห็น | แชร์ทาง WhatsApp

Narrative ระบบสนับสนุนการตัดสินใจผ่านการวิเคราะห์ข้อมูล ได้สรุปทริกสำคัญจากประสบการณ์ใช้งาน

  • อย่าใช้เซิร์ฟเวอร์เดียวกับระบบโปรดักชัน

  • อัปเกรดเป็น PG 12+ (อย่าใช้ CTE)

  • ทำดัชนีให้เล็กที่สุดเท่าที่ทำได้

  • ทำ table partitioning (range/list)

  • ลด disk I/O ให้ต่ำที่สุด

  • ทำ Vacuum หลัง bulk insert

  • ใช้ parallel query

  • เพิ่มการสุ่มตัวอย่างสถิติ (ต่อคอลัมน์หรือทั้ง DB; ค่าเริ่มต้นคือ 100 แต่ใช้ 500)

  • ใช้จำนวนคอลัมน์ให้น้อยลง (เพราะเป็นการจัดเก็บแบบ row-based)

  • สำหรับตารางขนาด 50 ล้านถึง 100 ล้านแถว Postgres ทำงานได้ยอดเยี่ยม

  • เมื่อสเกลไปถึงระดับพันล้าน แนะนำ Citus

https://www.citusdata.com : โอเพนซอร์สที่เปลี่ยน Postgres ให้เป็น distributed DB

3 ความคิดเห็น

 
twince 2021-05-12

จากประสบการณ์ ถ้าเป็นงานที่อิงกับ time series ก็คิดว่า timescaledb น่าจะดีกว่า แต่ก็ยังพูดอย่างระมัดระวังเพราะไม่มีข้อมูลอ้างอิงที่ชัดเจนครับ ในแง่อัตราการบีบอัดและประสิทธิภาพ ผมขอแสดงความเห็นอย่างระมัดระวังว่า timescaledb น่าจะดีกว่า

 
toughrogrammer 2021-05-12

ผม/ฉันสงสัยว่าถ้าเปรียบเทียบ citus กับ timescaledb จะเป็นอย่างไร

 
galadbran 2021-05-12

เท่าที่ผมเข้าใจ timescaledb มีข้อดีในด้านการพาร์ทิชันแบบ time-series ส่วน citus มีข้อดีในด้านการชาร์ดดิ้ง... (ว่าแต่ การใช้ทั้งสองอย่างร่วมกันก็ไม่ถึงกับเป็นไปไม่ได้ใช่ไหมนะ?)