PostgreSQL Tablo İstatistikleri
Merhaba , bu yazımda postgresql tablo istatistiklerine ait parametrelerden bahsedeceğim.
PostgreSQL’in cumulative istatistik sistemi , server activity hakkında bilgilerin toplanmasını ve raporlanmasını destekler.
İstatistikler yalnızca track_activities parametresi etkinleştirildiğinde toplanır.
Kullanıcı tabloları özelinde istatistikleri görmek için pg_stat_user_tables viewı kullanabilirsiniz.
pg_stat_user_tables activityler için tablo düzeyinde istatistikler sağlar.
Belirli veritabanı için her bir tabloya göre ayrılmış etkinlik istatistiklerine aşağıdaki komut ile erişebilirsiniz.
Sadece belirli bir tablo özelinde incelemek isterseniz relname koşulu ile tablo adını vermelisiniz.
Tablo adı ve karşılık gelen şema ve sahip bilgilerinin yanı sıra bu görünüm, tablo erişim modeli ve bakım etkinliği hakkında da bilgi sağlar.
İstatistik parametrelerinin bize hangi datayı sağladığını inceleyelim 🏃♀
seq_scan : Tabloda başlatılan seq scanlerin sayısı
seq_tup_read : Seq scanler tarafından getirilen canlı satır sayısı
idx_scan : Tabloda başlatılan index taramalarının sayısı
idx_tup_fetch : Index taramaları tarafından getirilen canlı satır sayısı
n_tup_ins : Insert edilen satır sayısı
n_tup_upd : Update edilen satır sayısı (hot update içerir)
n_tup_del : Delete edilen satır sayısı
n_tup_hot_upd : Hot update edilen satır sayısı
Hot update konusunuda daha önceki dökümanımda ele almıştım inceleyebilirsiniz .
n_live_tup : Canlı satır sayısı
n_dead_tup : Ölü satır sayısı
Dead Tuples
PostgreSQL’de DELETE yaptığınızda, satır (diğer adıyla Tuple) veri dosyasından hemen kaldırılmaz. Bunun yerine, yalnızca bir başlıkta xmax alanı ayarlanarak silinmiş olarak işaretlenir. PostgreSQL’de UPDATE’ler DELETE + INSERT olarak gerçekleşir.
Temizlenmezlerse, bu “ölü satırlar” (herhangi bir işlem için etkili bir şekilde görünmez) veri dosyalarında sonsuza kadar kalacak, disk alanını boşa harcayacak ve birçok DELETE ve UPDATE içeren tablolar için ölü satırlar disk alanının büyük çoğunluğunu kapsayacaktır. PostgreSQL’de buna “bloat” diyoruz.
Ve doğal olarak, veri sorgularının işlenmesi ne kadar fazla olursa (%99'u anında “ölü” olarak atılsa bile), sorgular o kadar yavaş olur.
n_mod_since_analyze : Tablonun en son analiz edilmesinden bu yana değiştirilen satır sayısı
n_ins_since_vacuum : Tablonun en son vacuumlanmasından bu yana eklenen satır sayısı
last_vacuum : Tablonun manuel olarak en son ne zaman vacuumlandığı (VACUUM FULL sayılmaz)
last_autovacuum : Tablonun autovacuum tarafından en son ne zaman süpürüldüğü
last_analyze : Tablonun manuel olarak analiz edildiği son zaman
last_autoanalyze : Tablonun autovacuum tarafından en son ne zaman analiz edildiği
vacuum_count : Tablonun manuel olarak vacuumlanma sayısı (VACUUM FULL sayılmaz)
autovacuum_count : Tablonun autovacuum tarafından vakumlanma sayısı
Vacuum ve Autovacuum konusunuda daha önceki dökümanımda ele almıştım inceleyebilirsiniz.
analyze_count : Tablonun manuel olarak analiz edilme sayısı
autoanalyze_count : Tablonun autovacuum tarafından analiz edilme sayısı
Sevgiler 💛
Referans