Estou trabalhando com um banco de dados PostgreSQL e preciso de alguns conselhos sobre quando executar VACUUM ANALYZE
em minhas tabelas.
Estou anexando uma tabela muito grande
tmp_details
(50 milhões de registros) como uma partição para uma tabela existentedetails
(500 milhões de registros). Adetails
tabela é usada ativamente para relatórios, mas não estou realizando nenhuma outra operação de gravação nela. Dada a documentação do PostgreSQL ( https://www.postgresql.org/docs/current/populate.html ), sugere-se executarVACUUM ANALYZE
após carregar grandes quantidades de dados:- É necessário correr
VACUUM ANALYZE
nadetails
mesa depois de acoplartmp_details
nela? - Se sim, devo aspirar a
details
mesa inteira ou apenas a divisória recém-fixada?
- É necessário correr
Também estou criando uma nova tabela
notreconciled
(10 milhões de registros) detmp_details
. Anotreconciled
tabela será usada tanto para relatórios quanto como uma partição mais tarde. Devo executarVACUUM ANALYZE
nanotreconciled
tabela após criá-la?
Quaisquer insights ou melhores práticas seriam muito apreciados!
A documentação afirma:
Como você está adicionando aproximadamente 10% mais dados à
details
tabela, pode fazer sentido executarANALYZE
nela, particularmente se a distribuição de dados na nova partição for diferente daquela na outra partição. Isso, como a citação acima indica, também atualizará as estatísticas da partição.Sua segunda pergunta, sobre a tabela (
notreconciled
) que pode se tornar uma partição em algum momento no futuro , é trivialmente respondida pela sugestão que você referencia em seu post: executeVACUUM ANALYZE
após carregar grandes quantidades de dados, especialmente se for uma tabela recém-criada. No entanto, ela será processada pelo daemon autovacuum em algum momento, se você estiver disposto a esperar.