Як переглянути повне блокування запитів постгресів?


9

Я використовую заяву з цієї сторінки для перегляду блокуючих запитів у Postgres

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;

Однак запити усічені, тому я зазвичай не бачу того, що в WHEREпункті, що робить налагодження цих проблем блокування дуже важким. Чи є налаштування, в якому я можу сказати postgres, щоб вносити всі запити вpg_stat_activity

Відповіді:


11

Довжина відслідковуваного запиту може бути знайдена в параметрі track_activity_query_size.

18.8.1. Збірник запитів та індексів статистики

track_activity_query_size (integer)

Вказує кількість байтів, зарезервованих для відстеження поточної команди, що виконується для кожного активного сеансу, для pg_stat_activity.current_queryполя. Значення за замовчуванням - 1024 . Цей параметр можна встановити лише при запуску сервера.

Наприклад, якщо ви були track_activity_query_size=16384у своєму конфігурації, то це означатиме, що текст запиту буде зібраний до 16 к.


1
Просто переконайтеся, що це зрозуміло (як зазначено в цитаті, що може не помітити уваги). Якщо змінити параметр config, для його вступу в силу потрібен перезапуск сервера.
Джоїші Бодіо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.