18 puan yazan xguru 2021-04-20 | 1 yorum | WhatsApp'ta paylaş

Push bildirim hizmeti OneSignal’ın 40 DB sunucusunda 75 TB veriyi işletirken öğrendikleri

  • Veri genel görünümü: subscribers, notifications tabloları en büyük olanlar

  • Bloat: daha fazla alan kaplayan, yavaşlayan ve daha fazla işlem gücü gerektiren durum

 → Table bloat: VACUUM

 → Index bloat: Heap Only Tuple(HOT) optimizasyonu

 → autovacuum’u açın

 → pg_partman eklentisiyle tablo bölümlendirmesini otomatikleştirin

 → pg_repack ve pgcompacttable

  • Veritabanı yükseltmeleri

 → pg_upgrdae veritabanının çevrimdışı olmasını gerektirdiği için seçenek dışı

 → Yeni sürüm PostgreSQL sunucusunu ayrı kurup pglogical eklentisiyle mantıksal çoğaltma kullanın

  • XID Wraparound

 → PostgreSQL’in MVCC(Multi Version Concurrency Control) özelliği 32 bit transaction ID kullandığı için işlem sayısı çoksa hızla sınırı aşabilir

 → Kalan XID’leri izlemek önemli

 → autovacuum_freeze_max_age

  • Replica Promotion

 → Hızlı replica terfisi için HAProxy arkasına koyun

  • Partitioning

 → Son PostgreSQL sürümleri tablo bölümlendirme özelliğini yerleşik olarak sunuyor

 → Bölümlendirme gerektiğinde mümkünse çok sayıda partition’a ayırmanız öneriliyor

   OneSignal, 16’dan 256’ya ve ardından 4096’ya bölümlendirmeyi planlıyor

  • Sharding

 → Yerleşik destek yok

 → Başlangıçta v4 UUID’yi aralığa göre ayıran Tenant ID ile sharding yapmışlardı

 → Şu anda partition ve shard farkında bir veri proxy’si geliştiriyorlar

1 yorum

 
xguru 2021-04-20