Postgresql de uzun süren sorguları bulmak ve kill etmek

Veritabanın performansını izlemek veya anlık lockları bulup kill etmek için ya da  modifiye etmek için aşağıdaki sorgulardan faydalanabilirsiniz.

SELECT  pid,  
now() - pg_stat_activity.query_start AS duration,
  query, 
 state  
FROM pg_stat_activity

WHERE (now() - pg_stat_activity.query_start) > interval '5 minutes';

Yukarıdaki komutta 5 dakikadan uzun süren sorguları getirir.Aşağıdaki komut yardımı ile ExclusiveLock olan sorguları bulmanıza yardımcı olur.

SELECT * FROM pg_locks pl LEFT JOIN pg_stat_activity psa ON pl.pid = psa.pid where mode ='ExclusiveLock';

Yukarıdaki sorgular yardımı ile sorgunuzu buldunuz ve sorgunuza ait pid(processes id) değerini öğrendikten sonra aşağıdaki komut yardımı ile durdurabilirsiniz.

SELECT pg_cancel_backend (__ pid__);

Sorguyu tamamen pg_cancel_backend komutunu kullanarak durdurmak birkaç saniye sürebilir .

Yada  aşağıdaki komutu kullanarak direk o session’ı kill edebilirsiniz .

SELECT pg_terminate_backend (__ pid__);

pg_terminate_backend komutu  tutarsızlığa neden olabilir , dikkatli kullanmanızı tavsiye ederim.

 453 total views,  1 views today

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa