MySQL supporta le viste materializzate?

MySQL supporta le viste materializzate?
Nel mondo moderno, la velocità è la chiave. Quando si creano applicazioni e software con un database, abbiamo bisogno di un rapido accesso ai dati nel tempo più minimo possibile. Per questo, implementiamo varie misure di database, comprese viste materializzate.

Tuttavia, a differenza del database PostgreSQL o Oracle, MySQL non supporta nativamente le viste materializzate, il che può essere un enorme svantaggio. Questo, tuttavia, non è un motivo per smettere di usare MySQL perché è un grande database per le principali applicazioni.

In questo tutorial, discuteremo rapidamente di quali sono le opinioni materializzate, come funzionano, istanze in cui sono applicabili e come implementare opinioni materializzate in MySQL.

NOTA: Suppongo che tu abbia una conoscenza di base mysql prima di immergerti in questa guida.

Quali sono viste materializzate?

Le viste materializzate sono risultati pre-calcolati di una query immagazzinata in una tabella. A differenza di una vista MySQL standard, una vista materializzata non è una finestra in una tabella di database; memorizza i dati reali.

Questi tipi di oggetti sono super utili quando hai bisogno di un accesso immediato ai dati e una normale query MySQL richiederebbe del tempo per elaborare. Un buon esempio è casi con un set di dati di grandi dimensioni che richiede molti calcoli.

Poiché le viste materializzate contengono dati reali, richiedono rinfrescanti per riflettere i valori aggiornati dalla stessa query. L'intervallo di aggiornamento per una vista materializzata dipende dal contenuto memorizzato e dalla velocità con cui i dati stanno cambiando.

MySQL supporta le viste materializzate?

La semplice risposta è no. In MySQL, non esiste un singolo comando che puoi eseguire per ottenere una vista materializzata. Ad esempio, non è possibile digitare il comando qui sotto e ottenere ciò di cui hai bisogno:

Mysql> Crea vista materializzata ..

Fortunatamente, con alcuni trucchi e strumenti forniti in modo nativo da MySQL, possiamo implementare una visione materializzata simile a quella fornita in modo nativo da PostgreSQL, Oracle e altri.

Come creare una vista materializzata in mysql

In questa sezione, ti mostrerò un modo per implementare una vista materializzata in MySQL.

NOTA: Sebbene questo metodo del workshop illustri un modo per creare una vista materializzata in MySQL, non sarà perfetto su tutti i database.

Supponiamo di avere uno schema chiamato (MV) che ha una tabella chiamata Info, utilizzata per archiviare le informazioni di vendita come mostrato nelle query seguenti:

Creare schema mv;
Usa MV;
Crea informazioni sulla tabella (
Id int primario chiave Auto_increment,
Seller_id int,
_ Data data,
Importo int
);
Inserisci Info (Seller_id, _Date, importo) (101, "2021-01-05", 200), (111, "2021-01-05", 600), (121, "2021-02-05", 1000);

Usando una tabella di esempio sopra, possiamo creare una tabella materializzata che memorizza le informazioni di una query come quella mostrata di seguito:

Seleziona Seller_id, _Date, Sum (Importo * 12 * 8) come Total_Amount From Info Where _Date < CURRENT_DATE ORDER BY seller_id;

La query potrebbe non sembrare efficace, considerando le dimensioni del database e le informazioni memorizzate nella tabella sopra perché verranno elaborate molto velocemente. Tuttavia, su un ampio database con molte informazioni, una domanda come quella sopra potrebbe richiedere del tempo per elaborare.

In tal caso, possiamo creare una vista materializzata per archiviare le informazioni dalla query sopra, permettendoci di accedere alle informazioni più veloce semplicemente selezionandole dalla vista diversa dall'uso della query grezza ogni volta.

Per creare una vista materializzata, possiamo creare una tabella con i risultati della query sopra:

Crea tabella materializzato_view (
Seleziona Seller_id, _Date, Sum (Importo * 12 * 8) come Total_Amount From Info Where _Date < CURRENT_DATE ORDER BY seller_id
);

Come aggiornare una vista materializzata

Come ora sai, una vista materializzata contiene dati reali; Non è un'istantanea di un tavolo.

Ciò significa che se la tabella principale viene aggiornata, i dati nella tabella di visualizzazione materializzata avranno bisogno di rinfrescanti.

Per aggiornare una vista materializzata, possiamo utilizzare la procedura mostrata di seguito:

Delimitatore $$
Crea procedura refrow_materialv (
Out dev int
)
INIZIO
Tabella troncata materializzata_view;
Inserire in materializzato_view
Seleziona Seller_id, _Date, Sum (Importo * 12 * 8) come Total_Amount
Da informazioni
Dove _Date seleziona * da materializzato_view;
+-----------+------------+--------------+
| Seller_id | _Date | Total_amount |
+-----------+------------+--------------+
| 101 | 2021-01-05 | 172800 |
+-----------+------------+--------------+

Quindi, prova ad aggiornare i dati archiviati nella tabella principale come:

Inserisci Info (Seller_id, _Date, importo) (101, "2021-01-05", 200), (111, "2021-01-05", 600), (121, "2021-02-05", 1000), ("131", "2021-01-05", 6000), ("141", "2021-01-05", 1400);

Infine, prova ad aggiornare i dati della tabella materializzato_view utilizzando la procedura che abbiamo creato sopra.

Chiama Refrow_Materialv (@Dev);
Seleziona * da materializzato_view;

Questo visualizza i valori nella tabella di visualizzazione materializzata aggiornata.

Conclusione

Questo tutorial ha discusso di quali sono le opinioni materializzate, come funzionano e come puoi implementarne una quando si utilizza MySQL. Considera di praticare i concetti insegnati in questo tutorial per padroneggiare il lavoro con opinioni materializzate.