2016-12-15 11:23 GMT-02:00 Tiago José Adami <[email protected]>:

> Em 15 de dezembro de 2016 09:26, Cleiton Luiz Domazak
> <[email protected]> escreveu:
> >> Rodou um VACUUM ANALYZE sobre a tabela após criar o índice? Qual a
> >> definição (comando) que você usou para criar o índice?
> >
> > Foi a primeira coisa a ser feita, fiz VACUUM, VACUUM FULL, ANALYZE,
> REINDEX, o pacote completo kkkk.
> >
> > O indice foi criado apenas em cima do campo data, sem nenhum tipo de
> formatação ou filtro.
>
> Ok. Isto deveria ter causando algum efeito.
>
> >> > Fiz o restore do dump gerado pelo cliente, e o mesmo problema ocorre
> no meu ambiente de testes. E ocorre em situações um pouco aleatórias.
> >> >
> >> > Essas são as datas que eu usei e se funcionou ou não. Muito esquisito.
> >> >
> >> > AND DR.DTINSERT>='2016-08-30' AND DR.DTINSERT<='2016-10-01' OK
> >> > AND DR.DTINSERT>='2016-08-30' AND DR.DTINSERT<='2016-11-01' OK
> >> > AND DR.DTINSERT>='2016-09-30' AND DR.DTINSERT<='2016-11-01' OK
> >> > AND DR.DTINSERT>='2016-08-30' AND DR.DTINSERT<='2016-11-30' OK
> >> > AND DR.DTINSERT>='2016-10-30' AND DR.DTINSERT<='2016-11-30' OK
> >> > AND DR.DTINSERT>='2016-10-30' AND DR.DTINSERT<='2016-11-01' NOK
> >>
> >> Qual a quantidade de registros total na tabela e a média mensal?
> >
> > Se você observar, se aumentar o range de data, a query fica rápida.
> >>
> >> Primeiro execute um VACUUM ANALYZE sobre a tabela como mencionei antes
> >> e depois roda um EXPLAIN para vermos o que o plano de acesso está
> >> fazendo para pelo menos uma consulta que ficou OK e para a NOK.
> >
> > Consegui finalmente rodar o EXPLAIN ANALYZE, e o plano realmente muda,
> agora vou ver o que mudou e pq.
>
> Desculpe, por um momento esqueci que o EXPLAIN não concluía. De acordo
> com as suas informações, se a tabela não possui nenhuma peculiaridade,
> há grandes chances de ser algum bug no PostgreSQL.
>

Testei em um server com a ultima release 9.4.10 e o mesmo problema ocorre.


>
> Antes de analisar o resultado do EXPLAIN, que tal tentar o seguinte:
>
> 1) Alterar o predicado da consulta para AND DR.DTINSERT BETWEEN
> '2016-10-30' AND '2016-11-01'. Por gentileza informe se houve algum
> resultado positivo ou negativo.
>

Já havia feito esse teste, mas como já fiz tanta coisa que já não lembrava
refiz kkkk, e o problema ainda assim ocorre.

>
> 2) Instalar mesma versão 9.4.9 em uma outra máquina (talvez uma
> máquina virtual?) com SO compatível ao seu ambiente de produção
> (Windows ou Linux ou Unix) e importar o dump (pode ser apenas a tabela
> em questão) para tentar reproduzir o erro;
>

Como ocorreu o mesmo problema em outra vesão e outro server, acabei
eliminando essa possibilidade

>
> 3) Se o erro persistir, atualize o PostgreSQL para a versão 9.4.10 e
> refaça o teste;
>

Feito, e ocorre o mesmo erro.

>
> 4) Se o erro persistir, instale então a versão 9.5.5 e depois a versão
> 9.6.1, importe novamente dump e refaça o teste para as duas versões;
>

Vou fazer um teste na versão 9.6, no mesmo server de teste, tenho um
cluster da 9.6 no ar.

>
> Em qualquer momento, se o problema não ocorrer mais, saberemos que já
> existe uma versão já com esta anomalia corrigida - então sugiro
> proceder com a atualização.
>
> Caso nenhuma das alternativas apresente uma solução é muito importante
> coletar o máximo de informações, descrever todas as etapas já
> realizadas nos testes e submeter o erro para a lista oficial de bugs
> [1] (em inglês, claro) seguindo as recomendações [2].
>

Esses são os EXPLAINs gerados na query completa.

EXPLAIN NOK - https://explain.depesz.com/s/YRnJ
EXPLAIN OK   - https://explain.depesz.com/s/dHqS

O que observei é que na query NOK, ao invés de o plano realizar um MERGE
JOIN, ele fez vários NESTED LOOP e ai que o bixo pega. Lembrando que na
query que ocorre o problema o range de data e consequentemente a quantidade
de dados é menor.


> [1] mailto:[email protected]
> [2] https://www.postgresql.org/docs/9.4/static/bug-reporting.html
>
> Adami
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a