Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Lemos

Tabelas particionadas e indices

Recommended Posts

Olá,

 

possuo em meu banco de dados uma tabela pai que vou chamar de "main" e mais outras tabelas filhas que são partições da tabela main. O critério para particionamento é o Estado (SP por ex) e o ano de entrada do registro(2010 por ex).

 

Quando executo um analize do select:

 

select * from main where Estado='SP'

 

Notei que o Planejador percorre todas as tabelas filhas mesmo as que não são de SP. Isso faz diferença em performance pois possuo milhoes de registros nessas tabelas.

 

Tentei implementar indices parciais na tabela main porém não adiantou.

 

como fazer com que o postgres consiga identificar em qual tabela filha deve procurar baseado na clausula where?

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ordem é estado,ano ?

 

A manual faz uma ressalva

 

  • If you are using manual VACUUM or ANALYZE commands, don't forget that you need to run them on each partition individually. A command like:

    ANALYZE measurement;

    will only process the master table.

==================================================

Mas não faz sentido, por acaso no caminho pro trabalho hoje vim lendo um artigo sobre partições no Oracle.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que ordem vc se refere? Tenho um índice sobre cada coluna.

 

Ja rodei VACUUM full em todas as tabelas. Já desisti de soluções que melhoram a performance do select.

 

Agora estou partindo para uma solução que eu consiga fazer com que o postgres selecione(ou pelo menos inicie o select) pela partição correta. Ou seja se o where é Estado='SP' and Ano='2010' vai direto para a tabela "filha_SP_2010", e não em todas as outras.

 

Consegue pensar em algo do tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falava da ordem da definição do particionamento.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.