Estou desenvolvendo um sistema em que uma das tabelas deve ter uma média de pelo menos 80 registros inseridos por dia.
Quando esse sistema estiver em produção por uns 6 meses, ainda vai dar para usar, mas depois de uns 2, 3 ou 5 anos deve ficar praticamente inviável fazer uma pesquisa nessa tabela.
Estou utilizando JSF para apresentação e Hibernate para persistência. O BD é PostgreeSQL.
Vocês costumam fazer alguma coisa para otimizar tanto o banco quanto a aplicação quando tem uma tabela que tende a crescer assim dessa forma?
Normalmente você precisa ter um esquema de mover registros antigos para uma tabela de histórico, não?
F
fbcarvalho
80 registros por dia não é uma taxa de crescimento tão grande assim, nem para o Java nem para o Postgresql. Tenho tabelas aqui com mais de 2 milhões de registros com taxas de crescimento de aproximadamente mil registros diários e não enfrento problema de performance. Otimizar uma aplicação não é uma tarefa simples, que tenha uma receita de bolo. Mas sugiro que você comece criando indices nas colunas da tabela que são mais usadas com filtros nas consultas. Não crie muitos índices pois isso degrada a performance de inserções/atualizações.
Tchello
É verdade, 80 registros diário não é nada…
Usava postgres e fiz um módulo que gerava em média 15 mil registros diários.
Realmente, pesquisar naquela tabela tava ficando difícil, foi ai que estudamos a criação de indexes.
Uma tática tbm muito usada quando se tem a geração grande assim de registro é a que já foi citada acima: mover para uma base de histórico, poupando esforços de quem pesquisa na entidade principal de não ter que se aventurar por milhões de registros antigos que dificilmente serão o alvo de alguma busca.