Støtter MySQL materialiserte visninger?

Støtter MySQL materialiserte visninger?
I den moderne verden er hastighet nøkkelen. Når vi bygger applikasjoner og programvare med en database, trenger vi rask tilgang til data i det mest mulig minimale tid. For det implementerer vi forskjellige databasetiltak, inkludert materialiserte visninger.

I motsetning til PostgreSQL eller Oracle Database, støtter MySQL imidlertid ikke materialiserte visninger, noe som kan være en enorm ulempe. Det er imidlertid ingen grunn til å slutte å bruke MySQL fordi det er en flott database for større applikasjoner.

I denne opplæringen vil vi raskt diskutere hva materialiserte synspunkter er, hvordan de fungerer, tilfeller der de er aktuelle, og hvordan de skal implementere materialiserte visninger i MySQL.

MERK: Jeg antar at du har grunnleggende MySQL -kunnskap før du dykker ned i denne guiden.

Hva er materialiserte visninger?

Materialiserte visninger er forhåndsberegnede resultater av en spørring som er lagret i en tabell. I motsetning til en standard MySQL -visning, er en materialisert visning ikke et vindu inn i en databasetabell; den lagrer faktiske data.

Disse objekttypene er super nyttige når du trenger øyeblikkelig tilgang til data, og en vanlig MySQL -spørring vil ta tid å behandle. Et godt eksempel er tilfeller med et stort datasett som krever mange beregninger.

Siden materialiserte visninger inneholder reelle data, krever de forfriskende for å gjenspeile verdiene som er oppdatert fra samme spørsmål. Oppdateringsintervallet for en materialisert visning avhenger av innholdet som er lagret og hvor raskt dataene endrer.

Støtter MySQL materialiserte visninger?

Det enkle svaret er nei. I mysql er det ingen enkelt kommando du kan kjøre for å få en materialisert visning. Du kan for eksempel ikke skrive kommandoen nedenfor og få det du trenger:

MySQL> Lag materialisert visning ..

Heldigvis, med noen få triks og verktøy levert av MySQL, kan vi implementere et materialisert visning som ligner på en naturlig levert av PostgreSQL, Oracle og andre.

Hvordan lage en materialisert visning i mysql

I denne delen vil jeg vise deg en måte å implementere et materialisert syn på i MySQL.

MERK: Selv om denne workshop -metoden illustrerer en måte å lage et materialisert visning i MySQL, vil den ikke være perfekt på alle databaser.

Anta at vi har et skjema som heter (MV) som har en tabell som heter informasjon, brukt til å lagre salgsinformasjonen som vist i spørsmålene nedenfor:

Lage skjema MV;
Bruk MV;
Lag tabellinfo (
id int primær nøkkel auto_increment,
Selger_id int,
_Dato dato,
beløp int
);
Sett inn INFO (selger_id, _date, beløp) verdier (101, "2021-01-05", 200), (111, "2021-01-05", 600), (121, "2021-02-05", 1000);

Ved å bruke en eksempel tabell ovenfor, kan vi lage en materialisert tabell som lagrer informasjon om en spørring som den som er vist nedenfor:

Velg Selger_id, _Date, sum (beløp * 12 * 8) som total_amount fra info hvor _date < CURRENT_DATE ORDER BY seller_id;

Spørringen virker kanskje ikke effektivt, med tanke på størrelsen på databasen og informasjonen som er lagret i tabellen over fordi den vil bli behandlet veldig raskt. I en stor database med mye informasjon, kan imidlertid en spørring som den ovenfor ta litt tid å behandle.

I et slikt tilfelle kan vi lage et materialisert visning for å lagre informasjonen fra spørringen ovenfor, slik at vi får tilgang til informasjonen raskere ved å bare velge den fra visningen annet enn å bruke RAW -spørringen hver gang.

For å lage en materialisert visning, kan vi lage en tabell med resultatene av spørringen over:

Lag tabell materialisert_view (
Velg Selger_id, _Date, sum (beløp * 12 * 8) som total_amount fra info hvor _date < CURRENT_DATE ORDER BY seller_id
);

Hvordan oppdatere en materialisert visning

Som du nå vet, inneholder en materialisert visning ekte data; Det er ikke et øyeblikksbilde av et bord.

Det betyr at hvis hovedtabellen er oppdatert, vil dataene i den materialiserte visningstabellen trenge forfriskende.

For å oppdatere et materialisert visning, kan vi bruke prosedyren vist nedenfor:

Avgrensning $$
Opprett prosedyre refresh_materialv (
Ut dev int
)
BEGYNNE
Avkortet bord materialisert_view;
Sett inn materialisert_view
Velg Selger_id, _Date, Sum (beløp * 12 * 8) som total_amount
Fra info
Hvor _date velger * fra materialisert_view;
+-----------+------------+--------------+
| Selger_id | _Date | Total_amount |
+-----------+------------+--------------+
| 101 | 2021-01-05 | 172800 |
+-----------+------------+--------------+

Deretter kan du prøve å oppdatere dataene som er lagret i hovedtabellen som:

Sett inn INFO (selger_id, _date, beløp) verdier (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);

Til slutt kan du prøve å oppdatere tabelldataene for materialisert_view ved å bruke prosedyren vi opprettet ovenfor.

Ring refresh_materialv (@dev);
Velg * fra Materialized_View;

Dette viser verdiene i den materialiserte visningstabellen oppdatert.

Konklusjon

Denne opplæringen diskuterte hvilke materialiserte visninger er, hvordan de fungerer, og hvordan du kan implementere en når du bruker MySQL. Vurder å øve konseptene som læres i denne opplæringen for å mestre å jobbe med materialiserte synspunkter.