Em 21-02-2014 16:48, Danilo Silva escreveu:
1º Deletar registros mais antigos, algo em torno de 10 milhões de registros; 2º Particionar a tabela; Penso em utilizar a 2ª opção visto ter acesso aos dados sem precisar modificar a aplicação (que é para ambiente web). Para a 2º opção o que vocês recomendam? Sei dos procedimentos para particionar tabelas (criar as tabelas filhas, criar as triggers, etc), mas a minha dúvida está na questão que a tabela já tem dados, como proceder neste caso, visto que a tabela não é pequena?
Escolha uma boa chave de particionamento, é o primeiro passo. Qual coluna será a que você usará como determinadora da partição.
Como você disse que é uma tabela de histórico, onde se faz delete dos dados antigos, provavelmente usar uma coluna com a data como chave pode ser uma boa ideia, pois remover os dados antigos depois sera um mero "drop table".
Sobre os dados antigos, se você adotar uma coluna data como particionadora, você pode justamente colocar a tabela antiga como filha do particionamento, e removê-la quando não precisar mais dela.
Cuidado com o particionamento: ele pode ajudar e também atrapalhar. Verifique se seus SELECTs e UPDATEs tocarão mais que uma partição depois que o particionamento ocorrer. Se isto for verdadeiro, cabe um estudo pra ver se o custo dos SELECTs e UPDATEs não vai aumentar ao invés de diminuir.
Enfim, pese tudo antes de sair fazendo, pra realmente ter um ganho. []s Flavio Gurgel _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
