Em 30-07-2012 12:50, Marco Aurélio Carvalho Feitosa escreveu:
> Bom dia, senhores
>
> CONTEXTO:
> Tenho uma tabela de movimentações do processos que é alimentada diariamente
> através de uma transformação (ETL - pentaho).
> Esta tabela está atualmente com mais de 20 milhões de registros.
> Nesta tabela temos um índice (mpinstancia , mpcodcomr , mpanoproc , mpnumproc)
>
> PROBLEMA:
> Hoje me deparei com um problema que aparentemente é resultado de um índice
> corrompido.
>
> SELECT mpinstancia, mpcodcomr, mpanoproc, mpnumproc, mpsequencial FROM
> bpu.movimentacao_processo
> WHERE mpinstancia = 1 AND mpcodcomr = 10 AND mpanoproc = 2001 AND mpnumproc = 
> 1890
>
> está retornando:
>
> mpinstancia    mpcodcomr    mpanoproc    mpnumproc    mpsequencial
> 1    10    2001    1890    1
> 1    10    2001    1890    2
> 1    10    2001    1890    3
> 1    10    2001    1890    4
> 1    10    2001    1890    5
> 1    10    2001    1890    6
> 1    10    2001    1890    7
> 1    10    2001    1890    8
> 1    10    2001    1890    9
> 1    10    2001    1890    10
> 1    10    2001    1890    11
> 1    10    2001    1890    12
> 1    10    2001    1890    13
> 1    10    2001    1890    14
> 1    10    2001    1890    15
> 1    10    2001    1890    16
> 1    10    2008    914321    60
> 1    10    2001    1890    19
> 1    10    2001    1890    20
> 1    10    2009    901354    21
>
>
> Como vcs devem ter notado a consulta retornou 2 registros que não satisfazem 
> aos
> critérios informados. Esse erro não ocorre quando a mesma consulta é executada
> sem a restrição "mpinstancia = 1" (sem utilizar o índice)
>
> Quais as possíveis causas desse problema? Como posso evitá-lo ou remediá-lo?

Nunca vi índice corromper no PostgreSQL sem que um erro de página 
corrompida caísse no log e a consulta fosse cancelada.

Talvez seu problema seja no relacionamento índice x tabela (as tuplas do 
índice apontam pras tuplas erradas da tabela) mas nunca vi isso, só se 
você fez algo manualmente de forma grosseira.

Todavia, você pode fazer um REINDEX (reconstruir o índice) e ver se seu 
problema se resolve.

Em tempo, qual é a versão exata do PostgreSQL e do Sistema Operacional?
Ah, e também, quais os tipos de dados das colunas afetadas e o tipo do 
índice. É um "covering index" ou outro tipo de índice não btree?

[]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