Kullandığım Faydalı PostgreSQL Fonksiyonları

20 Oca

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);