Pergunta

Estou pensando em enviar logs de Registros de gravação antecipada (WAL) no PostgreSQL para criar um banco de dados de espera.No entanto, tenho uma tabela no banco de dados que recebe uma grande quantidade de INSERT/DELETEs todos os dias, mas não me importo em proteger os dados nela contidos.Para reduzir a quantidade de WALs produzidos, eu queria saber, existe uma maneira de evitar que qualquer atividade em uma tabela seja registrada nos WALs?

Foi útil?

Solução

Infelizmente, não acredito que exista.O log do WAL opera no nível da página, que é muito inferior ao nível da tabela e nem sabe qual página contém dados de qual tabela.Na verdade, os arquivos WAL nem sabem quais páginas pertencem a quais base de dados.

Você pode considerar mover sua tabela de alta atividade para uma instância completamente diferente do PostgreSQL.Isso parece drástico, mas não consigo pensar em outra maneira de evitar que essa atividade apareça em seus arquivos WAL.

Outras dicas

Me deparei com esta velha pergunta, que agora tem uma resposta melhor.O Postgres 9.1 introduziu "Tabelas não registradas", que são tabelas que não registram suas alterações DML no WAL.Veja a documentação para mais informações, mas pelo menos agora existe uma solução para este problema.

Ver Aguardando 9.1 - tabelas UNLOGGED por depesz, e o 9.1 documentos.

Para oferecer uma opção para minha própria pergunta.Há tabelas temporárias - "tabelas temporárias são descartadas automaticamente no final de uma sessão ou, opcionalmente, no final da transação atual (veja ON COMMIT abaixo)" - o que eu acho que não gera WALs.Mesmo assim, isso pode não ser ideal, pois a criação e o design da tabela deverão estar no código.

eu consideraria memcached para casos de uso como este.Você também pode distribuir a carga por um monte de máquinas baratas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top