Eu tenho um banco de dados Postgres(9.1) de 14,7 TB que precisa suportar gravações pesadas por longos períodos de tempo. Eu sei que preciso gerenciar de perto meus IDs de transação para evitar o bloqueio do banco de dados. Recentemente, notei que as consultas estavam diminuindo e vi que havia vários autovacuums em execução em nossas enormes tabelas somente leitura, com o subscrito "(para evitar quebra automática)". Parei o software em execução e executei um vacuumdb -F -a
comando. No entanto, quando executo select current_query from pg_stat_activity
, vejo que os processos de autovacuum ainda estão em execução, mesmo durante um vácuo manual. Eu tentei matar os autovacuums select pg_cancel_backend(pid)
e eles morreram, mas imediatamente reiniciei novamente. Minhas perguntas:
- O autovacuum deve continuar a ser executado durante um vácuo manual de db?
- Como faço para efetivamente parar esses processos de autovacuum?
- Por que esses autovacuums continuariam sendo executados em uma tabela somente leitura? O que há para aspirar?