Melhor maneira de criar uma visão materializada no MySQL
18
Estou usando o MySQL 5.6. Não estou conseguindo criar uma visão materializada como no Oracle. Eu já vi uma ou duas soluções como o Flexview.
Alguém pode me dizer a melhor maneira de criar uma exibição materializada no MySQL (atualização automática como no Oracle) com o mínimo de complexidade?
Como você já o possui, pode ser necessária alguma diligência e graxa de cotovelo de sua parte para continuar a usá-lo (se você ainda não o fez)
ALTERNATIVA # 1
Você pode configurar as tabelas de resumo. Você precisará indexar suas tabelas base para dar suporte à agregação antes de criar tabelas de resumo.
ALTERNATIVA # 2
Aqui está um post antigo de http://www.materialized.info/, que tem uma estratégia mais prática que parece intrigante. Envolve o uso de gatilhos. Parece que poderia ser divertido ...
ALTERNATIVA # 3
Se suas tabelas base não são tão grandes e você pode consultar tabelas inteiras uma vez por semana, tente a User Commentsseção da documentação do MySQL em CREATE VIEW para obter idéias. Procure por palavras materializednessa página.
Se seus dados subjacentes são praticamente estáveis ou você pode tolerar a diferença entre a visualização e os dados, considere usar as ferramentas simple-rolap , que escrevi para tratar desse caso de uso. Isso permite que você escreva em arquivos separados consultas SQL complexas que geram tabelas. Os relacionamentos entre as consultas são derivados automaticamente e as consultas são executadas na ordem apropriada por meio da ferramenta de criação do Unix . Para atualizar as tabelas geradas, você precisa executar make clean all. A ferramenta é útil principalmente para a construção gradual de consultas sofisticadas que são executadas com eficiência com base nos resultados pré-calculados de suas entradas.
Encontrei 2 soluções possíveis para ter visualizações materializadas no MySQL:
Crie uma tabela de agregação com todos os dados necessários e, em seguida, crie acionadores nas tabelas de onde os dados vêm.
Crie um planejador que agregue periodicamente os dados em uma tabela
Veja mais detalhes sobre como implementar as 2 opções no meu blog aqui: materialized view MySQL
fonte
Se seus dados subjacentes são praticamente estáveis ou você pode tolerar a diferença entre a visualização e os dados, considere usar as ferramentas simple-rolap , que escrevi para tratar desse caso de uso. Isso permite que você escreva em arquivos separados consultas SQL complexas que geram tabelas. Os relacionamentos entre as consultas são derivados automaticamente e as consultas são executadas na ordem apropriada por meio da ferramenta de criação do Unix . Para atualizar as tabelas geradas, você precisa executar
make clean all
. A ferramenta é útil principalmente para a construção gradual de consultas sofisticadas que são executadas com eficiência com base nos resultados pré-calculados de suas entradas.fonte