Yang Saya Pelajari dari 5 Tahun Menskalakan PostgreSQL
(onesignal.com)Hal-hal yang dipelajari layanan push notification OneSignal saat mengoperasikan 75TB data di 40 server DB
-
Gambaran data: tabel
subscribersdannotificationsadalah yang paling besar -
Bloat: fenomena ketika penggunaan kapasitas bertambah besar, kinerja melambat, dan membutuhkan daya komputasi lebih banyak
→ Table bloat: VACUUM
→ Index bloat: optimisasi Heap Only Tuple(HOT)
→ aktifkan autovacuum
→ otomatisasi table partitioning dengan ekstensi pg_partman
→ pg_repack dan pgcompacttable
- Upgrade Database
→ pg_upgrdae memerlukan database offline sehingga bukan pilihan
→ siapkan server PostgreSQL versi baru secara terpisah dan gunakan logical replication dengan ekstensi pglogical
- XID Wraparound
→ fitur MVCC(Multi Version Concurrency Control) di PostgreSQL menggunakan transaction ID 32-bit, sehingga bila transaksi sangat banyak bisa cepat melewati batas
→ penting untuk memantau sisa XID
→ autovacuum_freeze_max_age
- Replica Promotion
→ untuk promosi Replica yang cepat, letakkan di belakang haproxy
- Partitioning
→ PostgreSQL versi terbaru sudah memiliki fitur table partitioning bawaan
→ saat partitioning diperlukan, bila memungkinkan disarankan membaginya menjadi banyak partition
OneSignal berencana mengubah partitioning dari 16 ke 256, lalu ke 4096
- Sharding
→ tidak ada dukungan bawaan
→ awalnya shard dilakukan dengan Tenant ID yang dibedakan berdasarkan rentang v4 UUID
→ saat ini sedang membuat data proxy yang memahami partition dan shard
1 komentar
Kekurangan PostgreSQL https://id.news.hada.io/topic?id=1829
Fitur-fitur PostgreSQL V12 yang kurang dikenal https://id.news.hada.io/topic?id=988
Menghemat ruang DB PostgreSQL https://id.news.hada.io/topic?id=3674