Come visualizzare le query postgres con blocco completo?


9

Sto usando una dichiarazione da questa pagina per visualizzare le query di blocco in 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;

Tuttavia, le query vengono troncate, quindi in genere non riesco a vedere cosa c'è nella WHEREclausola che rende molto difficile il debug di questi problemi di blocco. C'è un'impostazione in cui posso dire a Postgres di registrare tutte le querypg_stat_activity

Risposte:


11

La lunghezza della query tracciata può essere trovata nel parametro track_activity_query_size.

18.8.1. Raccoglitore di statistiche su query e indici

track_activity_query_size (integer)

Specifica il numero di byte riservati per tenere traccia del comando attualmente in esecuzione per ciascuna sessione attiva, per il pg_stat_activity.current_querycampo. Il valore predefinito è 1024 . Questo parametro può essere impostato solo all'avvio del server.

ad es. se avessi track_activity_query_size=16384nella tua configurazione, ciò significherebbe che verrebbe raccolto un testo di query fino a 16k.


1
Giusto per essere sicuro che sia chiaro (come indicato nel preventivo, che potrebbe essere trascurato). La modifica dell'opzione di configurazione richiederà un riavvio del server affinché abbia effetto.
— Joishi Bodio,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.