Il modo migliore per creare una vista materializzata in MySQL


19

Sto usando MySQL 5.6. Non riesco a creare una vista materializzata come posso in Oracle. Ho visto una o due soluzioni come Flexview.

Qualcuno può dirmi il modo migliore per creare una visione materializzata in MySQL (aggiornamento automatico come in Oracle) con il minimo della complessità?

Risposte:


11

Le viste materializzate non esistono in MySQL.

Flexviews è già stato raccomandato in StackExchange DBA in precedenza

Dato che ce l'hai già, potrebbe essere necessario un po 'di diligenza e grasso per gomito da parte tua per continuare ad usarlo (se non l'hai già fatto)

ALTERNATIVA # 1

È possibile esaminare l'impostazione delle tabelle di riepilogo. Sarà necessario indicizzare le tabelle di base per supportare l'aggregazione prima di creare tabelle di riepilogo.

ALTERNATIVA # 2

Ecco un vecchio post di http://www.materialized.info/ che ha una strategia più concreta che sembra intrigante. Implica l'utilizzo di trigger. Sembra che potrebbe essere divertente ...

ALTERNATIVA # 3

Se le tue tabelle di base non sono così grandi e puoi vivere interrogando intere tabelle una volta alla settimana, prova la User Commentssezione della documentazione di MySQL su CREATE VIEW per idee. Cerca la parola materializedin quella pagina.


Nell'ultima versione di MySQL è possibile creare una tabella con filtro dba.stackexchange.com/a/226707/50702
Revious

1

Ho trovato 2 possibili soluzioni per avere viste materializzate in MySQL:

  1. Creare una tabella di aggregazione con tutti i dati necessari, quindi creare i trigger sulle tabelle da cui provengono i dati.

  2. Creare uno scheduler che aggrega periodicamente i dati in una tabella

Vedi maggiori dettagli su come implementare le 2 opzioni nel mio post sul blog qui: materialized view MySQL


0

Se i tuoi dati sottostanti sono per lo più stabili o puoi tollerare la differenza tra la vista e i dati, allora considera l'utilizzo degli strumenti simple-rolap , che ho scritto per affrontare questo caso d'uso. Ciò consente di scrivere in file separati query SQL complesse che generano tabelle. Le relazioni tra le query vengono automaticamente derivate e le query vengono eseguite nell'ordine appropriato tramite lo strumento di creazione Unix . Per aggiornare le tabelle generate devi eseguire make clean all. Lo strumento è principalmente utile per creare in modo incrementale query sofisticate che vengono eseguite in modo efficiente in base ai risultati precalcolati dei loro input.


Probabilmente dovresti rendere più importante la divulgazione (che sei l'autore dello strumento).
Mustaccio,

Buon punto! Ho modificato la risposta per chiarire questo.
Diomidis Spinellis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.