Tam engelleme postgres sorguları nasıl görüntülenir?


9

Postgres'te engelleme sorgularını görüntülemek için bu sayfadan bir ifade kullanıyorum

SELECT bl.pid                 AS blocked_pid,
         a.usename              AS blocked_user,
         ka.query               AS blocking_statement,
         now() - ka.query_start AS blocking_duration,
         kl.pid                 AS blocking_pid,
         ka.usename             AS blocking_user,
         a.query                AS blocked_statement,
         now() - a.query_start  AS blocked_duration
  FROM  pg_catalog.pg_locks         bl
   JOIN pg_catalog.pg_stat_activity a  ON a.pid = bl.pid
   JOIN pg_catalog.pg_locks         kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid
   JOIN pg_catalog.pg_stat_activity ka ON ka.pid = kl.pid
  WHERE NOT bl.granted;

Ancak sorgular kesilir, bu yüzden genellikle WHEREbu engelleme sorunları hata ayıklama çok zor kılan maddesinde ne olduğunu göremiyorum . Postgres tüm sorguları günlüğe kaydetmek için söyleyebilirim bir ayar var mıpg_stat_activity

Yanıtlar:


11

İzlenen sorgunun uzunluğu parametrede bulunabilir track_activity_query_size.

18.8.1. Sorgu ve Dizin İstatistikleri Toplayıcısı

track_activity_query_size (integer)

Her etkin oturum için, o anda yürütülmekte olan komutu izlemek üzere ayrılan bayt sayısını belirtir pg_stat_activity.current_query. Varsayılan değer 1024'tür . Bu parametre yalnızca sunucu başlangıcında ayarlanabilir.

Örneğin track_activity_query_size=16384, yapılandırmanızda varsa, bu 16k’ye kadar olan sorgu metninin toplanacağı anlamına gelir.


1
Sadece açık olduğundan emin olmak için (alıntıda belirtildiği gibi, gözden kaçabilir) .. Bu yapılandırma seçeneğinin değiştirilmesi, etkinleşmesi için bir sunucunun yeniden başlatılmasını gerektirir.
Joishi Bodio
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.