I databasesystemer gemmer en materialiseret visning som et databaseobjekt de forudberegnede resultater af en forespørgsel som en fysisk tabel. Fordi dataene faktisk er gemt på disken, kan komplicerede søgninger hentes hurtigere. En visning er imidlertid en virtuel tabel, der definerer en forespørgsel, men som faktisk ikke indeholder data. En visning henter de seneste oplysninger fra de underliggende basistabeller, når du forespørger på den. Realtidsdataadgang vs. forudberegnede resultater er nogle af de kriterier, der bestemmer, om der skal bruges en materialiseret visning eller en standardvisning.
Hvad er et materialiseret syn?
En materialiseret visning gemmer fysisk resultaterne af en SQL-forespørgsel i databasen. De lagrede data kan opdateres med bestemte intervaller (manuelt, periodisk eller automatisk) for at holde visningen justeret med ændringerne i de underliggende basistabeller.
Hvordan fungerer materialiseret udsigt?
Lad os sige, at du vil udføre en kompleks SQL-forespørgsel, der opsummerer salgsdata efter flere regioner. I stedet for at udføre den komplekse forespørgsel, hver gang en rapport skal genereres, opretter du en materialiseret visning, der udfører den forudberegning og lagring af resultater. Når en bruger ønsker at se rapporten, henter den direkte fra den materialiserede visning i stedet for at skulle genberegne aggregeringerne under kørslen af et computerprogram uden at afbryde kørslen.
Almindelige anvendelsestilfælde af materialiseret syn
- Precomputing aggregations: Materialiseret visning er fantastisk til rapportering og analyser. Den forudberegner og gemmer aggregerede data, så tidskrævende forespørgsler ikke skal udføres igen og igen.
- Reduktion af belastning under komplekse sammenføjninger: Materialiseret visning oprettes for at forbinde tabeller og gemme resultatet under udførelse af forespørgsler, når databasen indeholder flere komplekse joinforbindelser.
- Caching af hyppigt tilgåede data: Materialiseret visning fungerer som en cache, der holder resultater, forbedrer forespørgselsydeevne og reducerer belastningen på basistabeller.
Hvad er en visning?
En visning er en virtuel tabel, der ikke selv gemmer data. Forespørgslen udføres et antal gange mod basistabellerne, hver gang visningen åbnes for at danne de seneste resultater.
Hvordan fungerer View?
Antag, at du har masser af basistabeller med kundeoplysninger fra forskellige regioner. Du opretter en visning i stedet for at skrive en kompleks SQL-forespørgsel, hver gang du skal se konsoliderede kundedata. Når du derefter forespørger i visningen, henter og viser den data ved at forbinde basistabellerne på farten.
Almindelige brugstilfælde
- Forenkling af komplekse forespørgsler: View kan indkapsle en kompleks serie af joinforbindelser og filtre i én virtuel tabel, hvilket muliggør enklere adgang til data for slutbrugere.
- Øget sikkerhed: Ved at definere en visning til kun at vise bestemte kolonner eller rækker, er det muligt at begrænse kendskabet til følsom dataadgang ved at holde de underliggende data skjult.
- Oprettelse af et abstraktionslag: Du kan bruge view til at give et abstraktionslag over flere tabeller, hvilket gør det meget nemmere at forstå og administrere dataene uden at skulle forstyrre de rå basistabeller.
Fordele og ulemper ved Materialized View vs. View
At vælge mellem et materialiseret synspunkt og et synspunkt involverer forståelse af kompromiserne. Nedenfor er detaljerede fordele og ulemper ved hver tilgang.
Fordele og ulemper ved materialiseret udsigt
| Aspekt | Fordele | Ulemper |
| Præstation | forbedrer ydeevnen ved at bevare forudberegnede resultater | hvis den ikke opdateres, bliver den forældet |
| Hastighed | skærer ned på den tid, der bruges på komplekse forespørgsler | For at bevare udsigten er der brug for mere opbevaring |
| Friskhed | kan opdateres løbende | Medmindre de er opdateret, er data ikke altid opdaterede |
| Ressourceforbrug | til gentagne forespørgsler bruges mindre CPU og hukommelse | kræver yderligere ressourcer til vedligeholdelse og opbevaring |
| Fleksibilitet | gavnlig for sager som analyser og rapportering | ikke den bedste mulighed for realtidsapplikationer, der har brug for nye data |
| Opretholdelse | kan opdateres automatisk (inkremental eller fuld) | for store databaser kan det være dyrt at opdatere |
| Komplekse forespørgsler | hjælper slutbrugere med at forstå komplekse forespørgsler | nødvendigt at opdatere visningen for at opdatere de underliggende tabeller |
| Samtidighed | ved at cache resultater reduceres belastningen på databasen | databasens ydeevne påvirkes af høje opdateringshastigheder |
Fordele og ulemper ved syn
| Aspekt | Fordele | Ulemper |
| Præstation | nyttig til at forenkle dataadgangen | hvis forespørgslen involverer flere joinforbindelser, eller aggregeringer bliver langsom |
| Hastighed | adgang til realtidsdata med den seneste information og ingen forsinkelser | langsommere forespørgsel, især når visningen er kompleks |
| Friskhed | altid opdateret med de underliggende tabeller | kan føre til dårlig ydeevne med komplekse forespørgsler |
| Ressourceforbrug | det vil ikke kræve mere lagerplads, da det kun gemmer en definition af forespørgslen | Hver udførelsesforespørgsel genberegner resultaterne |
| Fleksibilitet | kan behandles som en normal tabel i forespørgsler | ikke egnet til præstationstunge analyser |
| Opretholdelse | ingen opdatering er nødvendig, da den automatisk får realtidsdata | ydeevnen kan blive forringet, når den tilgås på en hyppig basis ved hjælp af store datasæt |
| Komplekse forespørgsler | gør det nemmere i forespørgselslogik at give en struktureret abstraktion | forudberegnede resultater kan ikke gemmes som en materialiseret visning |
| Samtidighed | den viser altid ændringer i realtid i underliggende tabeller | tung belastning kunne lægge ekstra vægt på databasen |
Nøgleforskelle mellem udsigt og materialiseret udsigt
Moderne applikationer er afhængige af databaser som rygraden, og kontrollen af data udføres af to nøgleværktøjer: materialiseret visning og visning. De eksisterer hovedsageligt for at forenkle dataadgang og optimere forespørgselsydeevne, men de adskiller sig i deres formål. Følgende er et par kendetegn mellem en materialiseret visning og en visning.
Opbevaring
- Materialiseret visning: Gemmer faktiske data i databasen.
- Visning: Gemmer ikke data; gemmer kun forespørgselsdefinitionen.
Forespørgselsudførelse
- Materialiseret visning: Forudregnet data hentes, hvilket forbedrer forespørgselsydeevnen.
- Udsigt: Forespørgselsudførelse påbegyndes med hver adgang.
Datafriskhed
- Materialiseret visning: Data kan blive forældede, medmindre de udtrykkeligt opdateres.
- Udsigt: Den henter altid de seneste data fra de underliggende tabeller.
Præstation
- Materialiseret visning: Det er hurtigere, da de tidligere beregnede data er blevet gemt.
- Udsigt: Hvis forespørgslen er kompleks, kan den være langsommere, da den er on-demand.
Opdateringsmekanisme
- Materialiseret visning: Det kræver en manuel eller planlagt opdatering at opdatere indholdet.
- Udsigt: Ingen opdatering er nødvendig, da realtidsdata altid hentes.
Opbevaringskrav
- Materialiseret visning: Kræver noget ekstra lagerplads for at bevare de forudberegnede resultater.
- Udsigt: Bruger stort set ingen lagring bortset fra forespørgselsmetadata.
Brug Cases
- Materialiseret visning: Velegnet til rapportering, analyser og præstationstunge forespørgsler.
- Udsigt: En mulighed, når data nær realtid er et must.
Kompleksitet
- Materialiseret visning: Vedligeholdelse og genopfriskning er nødvendig.
- Udsigt: Enkel at sætte op og bruge, men kan være ressourcekrævende.
Hvornår skal man bruge materialiseret visning vs. visning
Brug materialiseret visning når:
Materialiseret visning er der, når ydelsen af forespørgsler skal forbedres for enhver pris, især hvis en sådan forespørgsel involverer mange beregninger, før de returnerer resultater med tung aggregering, joinforbindelser eller behandlingsoperationer. Det kan være særligt nyttigt, når præberegnede resultater gør store forskelle i den belastning, der pålægges databasen, eller hastigheder, hvormed forespørgsler returnerer resultater. Selvom materialiseret visning har brug for periodisk opfriskning for at få de seneste opdaterede data, tjener de et formål i rapportering og analytiske scenarier, hvor dataadgang i realtid ikke er så kritisk, men hurtig eksekvering stadig tæller.
Brug visning når:
Brug visningen, hvor forespørgslen altid skal hente de nyeste data, hvor dataadgang skal være i realtid, og forespørgselskompleksitet kan administreres, og husk på, at visningen ikke gemmer data fysisk i databasen, hvilket kræver lavere lagerplads. Husk dog for meget komplekse forespørgsler, at visningen kan gøre systemet langsommere, når det udføres et antal gange.
Konklusion
Hvor forskellig den materialiserede visning er fra den almindelige visning, er et vigtigt koncept, når du justerer en databases ydeevne. Materialiseret visning er en visning, der gemmer forudberegnede resultater for at fremskynde forespørgslen ved tunge operationer; de kan dog være besværlige i vedligeholdelsen, da de kan blive forældede, hvis de ikke genopfriskes i god tid. Tværtimod opdateres visningen for ændringer fra underliggende basistabeller for nøjagtighed i realtid, selvom de kan koste en vis ydeevne.
Når du skal vælge mellem dem, skal du overveje din databases arbejdsbyrde, forespørgslens kompleksitet og hvor vigtige realtidsdata er. Til rapportering eller analyser, hvor ydeevne er prioriteret, er materialiseret visning en stærk kandidat. I modsætning hertil er en regelmæssig visning ønskelig for scenarier, hvor de seneste data har betydning.
Den endelige beslutning kan også afhænge af det databasesystem, der anvendes. Forskellige databasesystemer, bl.a PostgreSQL, Oracle, og MySQL har forskellige niveauer af materialiseret visningsstøtte og -kapacitet.