PostgreSQL’ü 5 yıl ölçeklerken öğrendiklerimiz
(onesignal.com)Push bildirim hizmeti OneSignal’ın 40 DB sunucusunda 75 TB veriyi işletirken öğrendikleri
-
Veri genel görünümü:
subscribers,notificationstabloları 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
PostgreSQL'in kusurları https://tr.news.hada.io/topic?id=1829
PostgreSQL V12'nin pek bilinmeyen özellikleri https://tr.news.hada.io/topic?id=988
PostgreSQL DB alanından tasarruf etmek https://tr.news.hada.io/topic?id=3674