Postgresql Katalog

Bu konu, sorgular yavaşladığında, uygulama sık sık donmaya başladığında yapacağınız
araştırmalarla ilgili faydalı bilgileri içerir.

Sistemde yer alan tablo, kolon, index vb. schema objelerininin metadası ve sistemde
toplanan istatistikler pg_catalog schemasındaki tablolarda ve viewlarda tutulur.

pg_catalog schemasındaki tablolar kullanıcılar tarafından dolaylı olarak değiştirilir.
Örneğin bir veritabanı oluşturulduğunda pg_database tablosuna, bu oluşturulan
veritabanının satırı sistem tarafından otomatik eklenir.

Normalde bu tablolar kullanıcılar tarafından değiştirilmemelidir. Değiştirilmesi
durumunda veritabanına ciddi zararlar verebilir. Yalnızca acil durumlarda ileri seviye
veritabanı yöneticileri tarafından değişkliğe gidilmelidir.

Collector prosesi tablolardaki DML, disk/memory okuma oranları, index kullanımı, lock
vb. istatistikleri kayıt eder. Bu istatistikler pg_catalog schemasındaki view lardan
sorgulanabilir.

Bu bilgiler hem postgresql tarafından hem de veritabanı yöneticisi tarafından kullanılır.
Örneğin, Postgresql, bir select cümlesinin çalıştırma planına (execution plan) karar
verebilmesi için o tablodaki satır sayına ihtiyacı vardır. Bu satır sayısını pg_catalog
dan temin eder.

Veritabanı yöneticileri de tablolar üzerindeki DML sayılarını, kullanılmayan indexler vb.
bilgileri pg_catalog’daki istatistikleri sorgulayarak tespit eder.
Detaylı için postgresql.org/docs/current/catalogs.html linki ziyaret edilebilir.

Sistemin Geneli ile İlgili Bilgiler İçeren Katalog Objeleri

pg_database : Sistemdeki tüm veritabanları için bir satır kayıt vardır. “create
database” ile bir veritabanı oluşturulduğunda bu tabloya sistem tarafından bir satır
eklenir.

postgres=# \x
Expanded display is on.

postgres=# select * from pg_database;

[ RECORD 5 ]-+------------------------------------

oid           | 16634         # Object ID
datname       | DVDRental     # Veritabanın ismi
datdba        | 16633         # pg_authid’deki sahip OID’si
encoding      | 6
datcollate    | en_US.UTF-8
datctype      | en_US.UTF-8
datistemplate | f
datallowconn  | t
datconnlimit  | -1 # Eş zamanlı bağlantı limiti
datlastsysoid | 12661
datfrozenxid  | 478
datminmxid    | 1
dattablespace | 1663 # Default tablespace
datacl

pg_user : Sistemdeki tüm kullanıcılar ile ilgili bilgiler pg_user view objesinden
sorgulanabilir.

pg_stat_database : commit, rollback, deadlocks, yazma/okuma hızları,
memory den okuma oranları gibi performans analizi yaparkan ihtiyaç duyulacak önemli
bilgileri pg_stat_database’ den sorgulanabilir.

pg_locks : Aktif proseslerin locklarını pg_locks’dan sorgulanabilir.

pg_stat_bgwriter : Checkpoint, background writer proseslerinin ve buffer ile
ilgili istatistikleri pg_stat_bgwriter’ dan sorgulanabilir.

pg_stat_activity : Oturumların (session) statülerini, bağlı oldukları
veritabanlarını, hangi uygulama ile bağlı olduklarını, çalıştırılan SQL gibi bir çok bilgiyi
anlık olarak pg_stat_activity’den sorgulanabilir.

pg_locks ile join yaparak locklar hakkında daha detaylı bilgiler elde edilebilir.

pg_stat_replication, pg_stat_replication_slots,
pg_stat_receiver ve pg_stat_subscription
‘dan replikasyon ile ilgili
bilgiler sorgulanabilir.

Veritabanına Özel Bilgiler İçeren Katalog Objeleri

Her veritabanının sadece kendisi ile ilgili metadata verilerini ve istatistik bilgilerinin
tutulduğu pg_catalog scheması vardır. Bağlanılan veritabanının bilgileri
sorgulanabilir.

Örneğin; dvdrental veritabanının pg_catalog scheması kendisi ile
ilgili bilgi ve istatistikleri içerir. Bunları sorgulamak için dvdrental veritabanına bağlı
olmak gerekir.

-Her bir tabloda gerçekleşen insert/update/delete/fetch bu işlemlerin ne
kadarı memory de ne kadarı diskte gerçekleşir, - -Her bir indekste gerçekleşen taramayı, okunan satır sayısı vb. bilgileri
pg_catalog schemasından tespit etmek mümkündür.

Performans analizleri yaparken ilk bakılacak view objeleri ;

pg_stat_user_tables : Kullanıcı tablolarına erişim istatistiklerini içerir.

pg_statio_user_tables : Kullanıcı tablolarına IO istatiktiklerini içerir.

pg_stat_user_indexes : Taranma (scan) sayısı, kaç satırın okunduğu, kaç canlı
(live) satırın gerçekten çağrıldığı gibi istatistikleri içerir.

pg_statio_user_indexes : Diskten ve memory den okuma istatistiklerini içerir.

Kategori seçin...