18 คะแนน โดย xguru 2021-04-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

สิ่งที่ OneSignal ซึ่งเป็นบริการพุชแจ้งเตือน ได้เรียนรู้จากการดูแลข้อมูลขนาด 75TB บนเซิร์ฟเวอร์ฐานข้อมูล 40 เครื่อง

  • ภาพรวมข้อมูล: ตาราง subscribers และ notifications มีขนาดใหญ่ที่สุด

  • Bloat: ปรากฏการณ์ที่ใช้พื้นที่มากขึ้น ทำงานช้าลง และต้องใช้พลังประมวลผลมากขึ้น

→ Table bloat: VACUUM

→ Index bloat: การเพิ่มประสิทธิภาพ Heap Only Tuple(HOT)

→ เปิดใช้ autovacuum

→ ทำให้การแบ่งพาร์ทิชันตารางเป็นอัตโนมัติด้วยส่วนขยาย pg_partman

→ pg_repack และ pgcompacttable

  • การอัปเกรดฐานข้อมูล

→ pg_upgrdae ต้องให้ฐานข้อมูลออฟไลน์ จึงไม่สามารถเลือกใช้ได้

→ ตั้งค่าเซิร์ฟเวอร์ PostgreSQL เวอร์ชันใหม่แยกต่างหาก และใช้ logical replication ผ่านส่วนขยาย pglogical

  • XID Wraparound

→ ฟีเจอร์ MVCC(Multi Version Concurrency Control) ของ PostgreSQL ใช้ transaction ID แบบ 32 บิต จึงอาจวนครบได้อย่างรวดเร็วหากมีทรานแซกชันจำนวนมาก

→ การมอนิเตอร์ XID ที่เหลืออยู่เป็นเรื่องสำคัญ

→ autovacuum_freeze_max_age

  • Replica Promotion

→ เพื่อให้โปรโมต Replica ได้รวดเร็ว จึงวางไว้หลัง haproxy

  • Partitioning

→ PostgreSQL เวอร์ชันล่าสุดมีฟีเจอร์แบ่งพาร์ทิชันตารางมาในตัว

→ หากจำเป็นต้องทำพาร์ทิชัน แนะนำให้แบ่งเป็นหลายพาร์ทิชันให้มากที่สุดเท่าที่ทำได้

→ OneSignal มีแผนจะเปลี่ยนการแบ่งพาร์ทิชันจาก 16 เป็น 256 และต่อไปเป็น 4096

  • Sharding

→ ไม่มีการรองรับแบบ built-in

→ เดิมทีทำชาร์ดโดยใช้ Tenant ID ที่แยกช่วงจาก v4 UUID

→ ปัจจุบันกำลังสร้าง data proxy ที่รับรู้ทั้งพาร์ทิชันและชาร์ด

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

 
xguru 2021-04-20