PostgreSQL veritabanında kullandığım ve herkese faydası olabilecek bazı istatistiksel ve yönetimsel fonksiyonları başlıklar halinde paylaşmak istiyorum. Yazı içerisindeki linklerden tüm fonksiyonlara ulaşabilirsiniz.
İstatistik Toplayıcı Fonksiyonlar
PostgreSQL vertabanının istatistik toplayıcısı, sunucu etkinliği hakkındaki bilgilerin toplanmasını ve raporlanmasını destekleyen bir alt sistemdir. Toplanan istatistikler kullanıcılara yönetimsel anlamda fayda sağlar.
pg_stat_activity
Veritabanında yürütülen işlemin mevcut faaliyeti ile ilgili bilgileri pg_stat_activity fonksiyonu gösterir. Gerçekleşen her işlemin bilgisi tek bir satırda listelenir. Sorgunun yapıldığı anda veritabanında hangi işlemlerin aktif olduğunu görüntüleyebilirsiniz. O anda yürütülmekte olan sorguları, sorguları hangi kullanıcının ne zaman başlattığını, process kimlik numarasını öğrenebilirsiniz.
select * from pg_stat_activity;
select * from pg_stat_activity order by query; // Sıralı
Sistem Yönetim Fonksiyonları
Sistemsel fonksiyonlar, veritabanını kontrol etmek ve izlemek için kullanılırlar.
current_setting(setting_name text [, missing_ok boolean ])
Bu fonksiyon, setting_name
parametresi ile verilen ayarın değerini gösterir.
select current_setting('datestyle'); // ISO, MDY
select current_setting('timezone'); // UTC
set_setting(setting_name text, new_value text, is_local boolean)
Bu fonksiyon, setting_name
adındaki ayarın değerini new_value
değeri ile değiştirir. Eğer is_local
değeri true olarak işaretlenirse yeni ayar yalnızca mevcut işlem için geçerli olacaktır. Mevcut oturumda geçerli olması için is_local false olarak işaretlenmelidir.
SELECT set_config('log_statement_stats', 'off', false);
pg_cancel_backend (pid integer)
Arka planda çalışan pid
numaralı işlem kimliğine sahip olan sorguyu iptal eder. Örneğin ABC kullanıcısı farkında olmadan sistem kaynaklarını aşırı tüketen ve saatler süren bir sorgu çalıştırdı. Bunu iptal etmek için önce pg_stat_activity
ile ilgili sorguyu bulduktan sonra ilgili sorguyu iptal edebilirsiniz. Ancak sadece superuser olanlar superuser olanların işlemlerini iptal edebilirler.
select pg_cancel_backend (1145);
pg_terminate_backend (pid integer)
Arka planda çalışan pid
numaralı işlem kimliğine sahip olan oturumu sonlandırır. Ancak sadece superuser olanlar superuser olanların oturumlarını sonlandırabilir.
select pg_terminate_backend (1145);