Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tabelas de dados agregados


Essa funcionalidade seria melhor atendida por um recurso chamado visualização materializada , que infelizmente falta ao MySQL. Você pode considerar migrar para um sistema de banco de dados diferente, como o PostgreSQL.

Existem maneiras de emular visualizações materializadas no MySQL usando procedimentos armazenados, gatilhos e eventos. Você cria um procedimento armazenado que atualiza os dados agregados. Se os dados agregados precisarem ser atualizados em cada inserção, você poderá definir um gatilho para chamar o procedimento. Se os dados precisam ser atualizados a cada poucas horas, você pode definir um Evento do agendador MySQL ou um cron job para fazer isso.

Existe uma abordagem combinada, semelhante à sua opção 3, que não depende das datas dos dados de entrada; imagine o que aconteceria se alguns dados novos chegassem um momento tarde demais e não entrassem na agregação. (Você pode não ter esse problema, não sei.) Você pode definir um gatilho que insere novos dados em um "backlog" e fazer com que o procedimento atualize a tabela agregada apenas do backlog.

Todos esses métodos são descritos em detalhes neste artigo:http://www.fromdual.com/ mysql-materialized-views