Em 21-06-2012 10:25, Anselmo Silva escreveu:
> SELECT
>    client_addr AS "estação",
>    D.datname AS "base de dados",
>    relname AS "tabela",
>    CASE
>      WHEN mode = 'AccessShareLock' THEN 'Acesso a tabela'
>      WHEN mode = 'ExclusiveLock' THEN 'Travamento da tabela'
>      WHEN mode = 'RowShareLock' THEN 'Acesso ao registro da tabela'
>      WHEN mode = 'RowExclusiveLock' THEN 'Travamento do registro da tabela'
>    END AS "modo"
> FROM pg_locks L
>    INNER JOIN pg_class C ON C.oid = L.relation AND C.relkind = 'r'
>    INNER JOIN pg_database D ON D.oid = L.database
>    INNER JOIN pg_stat_activity S ON S.procpid = L.pid
> WHERE
>    relname NOT LIKE 'pg_%'
> ORDER BY modo, client_addr, relname;
>
>
>
>
> Em 21 de junho de 2012 10:18, Miguel Bezerra <[email protected]
> <mailto:[email protected]>> escreveu:
>
>     Pessoal,
>
>     Venho observando que existem diversas conexões com o status de
>     "<IDLE> in transaction" dentro do meu servidor. Algumas demoram
>     bastante para finalizar, enquanto outras nunca terminam.
>
>     Imagina que esse status seja referente a transações em aberto.
>
>     Gostaria de saber se existe alguma forma de executar algum tipo de
>     trace, via postgres, e verificar o que está sendo executado dentro
>     dessas transações.
>

Além da dica do Anselmo, pra você visualizar 100% do que uma transação 
está fazendo, você pode habilitar log_statement no conf e observar todas 
as transações, cada consulta executada, na sequência, direto no log do 
PostgreSQL.

Só lembre-se de ativar esse parâmetro por um pequeno período de tempo, 
senão seu log vai ficar gigante. É um parâmetro que não requer reinício 
do PostgreSQL, só reload, não causa indisponibilidade.

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a