Estou tentando entender o FILLFACTOR
parâmetro index em um exemplo simples. Tenho uma tabela que geralmente é atualizada apenas uma vez a cada dez dias, mas a atualização é bastante pesada (requer de 5 a 6 horas).
Agora, costumo soltar o índice em uma coluna da tabela, atualizar os dados e criar o índice novamente com FILLFACTOR = 100
.
Isso é uma boa prática? Não tenho certeza disso porque não entendo o FILLFACTOR
conceito em geral. Por padrão é 90% e dizem que é necessário para fazer atualizações e inserções.
Mas tentei criar um índice com FILLFACTOR = 100
e, em seguida, atualizar algumas linhas e adicionar uma nova e funcionou bem. Mas eu autovacuum
virei off
. Correr ANALYZE
, no entanto, exigia apenas 3 segundos.
Então, como funciona o espaço livre deixado pelo fillfactor?
O espaço livre dentro da tabela pode ser usado para acelerar certos tipos de atualizações nas tabelas, fazer inserções mais rapidamente evitando a necessidade de estender a tabela e tornar o crescimento do índice mais eficiente.
Se sua tabela muda apenas com pouca frequência e você não se importa em reindexá-la (ou descartar e recriar o índice) a cada vez, tudo bem. Um fator de preenchimento de 100 economizará um pouco de E/S ao digitalizar o índice, e o espaço sobressalente não será útil para você, a menos que você faça inserções/atualizações na tabela indexada.