Bom dia!!!

Em 5 de setembro de 2013 09:07, Matheus de Oliveira <
matioli.math...@gmail.com> escreveu:

>
> 2013/9/4 JotaComm <jota.c...@gmail.com>
>
>>
>> Pessoal,
>>
>> Boa tarde!!!
>>
>>
> Opa. Bom dia, =D...
>
>
>> Vou expor o meu problema e gostaria de saber se alguém já passou por
>> situação semelhante:
>>
>> Tenho um vacuum rodando em uma tabela desde o dia 2013-08-27 18:58:
>> 41.527238-03, no entanto a tabela não é grande: 5.428.982 - (8243 MB
>> incluindo indices).
>>
>> Estou achando muito estranho a demora e não encontrei nada que me
>> indicasse problema, porém tenho tabelas maiores e o vaccum roda
>> normalmente. Tentei cancelar o processo e não obtive sucesso:
>>
>> billing=# SELECT localtimestamp(0);
>> -[ RECORD 1 ]------------------
>> timestamp | 2013-09-04 11:23:06
>>
>> billing=# SELECT
>> pg_stat_activity.procpid,pg_stat_activity.current_query,pg_stat_activity.query_start
>> FROM pg_stat_activity WHERE pg_stat_activity.current_query ~
>> 'public.mensagem' AND pg_stat_activity.procpid!=pg_backend_pid();
>> -[ RECORD 1 ]-+-----------------------------------------------------------
>> procpid       | 2738
>> current_query | autovacuum: VACUUM public.mensagem (to prevent wraparound)
>> query_start   | 2013-08-27 18:58:41.527238-03
>>
>> billing=# SELECT pg_cancel_backend(2738);
>> -[ RECORD 1 ]-----+--
>> pg_cancel_backend | t
>>
>> billing=# SELECT localtimestamp(0);
>> -[ RECORD 1 ]------------------
>> timestamp | 2013-09-04 11:23:18
>>
>> billing=# SELECT
>> pg_stat_activity.procpid,pg_stat_activity.current_query,pg_stat_activity.query_start
>> FROM pg_stat_activity WHERE pg_stat_activity.current_query ~
>> 'public.mensagem' AND pg_stat_activity.procpid!=pg_backend_pid();
>> -[ RECORD 1 ]-+-----------------------------------------------------------
>> procpid       | 2738
>> current_query | autovacuum: VACUUM public.mensagem (to prevent wraparound)
>> query_start   | 2013-08-27 18:58:41.527238-03
>>
>>
> Sempre que consultar a pg_stat_activity, inclua a coluna waiting. Acredito
> que você omitiu a principal informação para ajudarmos a resolver o problema.
>
>
> Outras informações:
>>
>> procpid            | 2738
>> relname            | mensagem
>> current_query      | autovacuum: VACUUM public.mensagem (to prevent
>> wraparound)
>> query_start        | 2013-08-27 18:58:41.527238-03
>> virtualtransaction | 3/301
>> mode               | ShareUpdateExclusiveLock
>> n_tup_ins          | 448414
>> n_tup_upd          | 2665536
>> n_tup_del          | 0
>> n_live_tup         | 448375
>> n_dead_tup         | 1129161
>> last_vacuum        |
>> last_autovacuum    |
>> last_analyze       |
>> last_autoanalyze   |
>>
>>
> Bom, apesar de *você não informar* qual foi essa última consulta, vejo
> que é um join entre pg_stat_activity, pg_locks e pg_stat_user_tables, e,
> pelo ShareUpdateExclusiveLock podemos assumir que o VACUUM está bloqueado
> (por favor, inclua a coluna pg_locks.granted ou pg_stat_activity.waiting
> para garantir). Bom, agora temos que descobrir quem está bloqueando o
> VACUUM, eu chutaria, pelo tempo, que você está usando "prepared
> transactions", por favor verifique o resultado da consulta (conectado à
> base em questão):
>

Exato, é um JOIN entre estas tabelas. O vacuum não está bloqueado (waiting
= FALSE) e em pg_locks granded=TRUE.  Não tenho prepared statements
bloqueadas neste banco.

O mais estranho é que não consigo "matar", conforme descrevi acima.



> SELECT * FROM pg_prepared_xacts;
>
> E verifique se alguma pode ser "matada" (provavelmente uma com o timestamp
> "prepared" antigo), se puder execute o seguinte para matá-la:
>

Não tem nada lá.

>
> ROLLBACK PREPARED 'foo';
>

Já havia feito as duas análises: O vacuum não esta bloqueado e também não
há nada nesta view.

>
> Onde "foo" seria o identificador da transação, que pode ser recuperado na
> coluna "gid".
>
>
> A versão do PostgreSQL é a 9.0.4.
>>
>>
> Atualize imediatamente (sem desculpas) para a versão 9.0.13 (ou se puder,
> para a 9.2.4, mas essa  não precisa do "imediatamente", =P ).
>
> A versão do SO é CentOS release 6.3 (Final).
>>
>>
> Também vale a pena atualizar para o 6.4, mas não vejo como algo tão
> crítico/urgente.
>

Concordo, porém nem tudo é tão simples :(

>
>
>
> Atenciosamente,
> --
> Matheus de Oliveira
> Analista de Banco de Dados
> Dextra Sistemas - MPS.Br nível F!
> www.dextra.com.br/postgres
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a