Anbefalinger for optimalisering av dataytelse
Gjelder denne Power Platform anbefalingen for Well-Architected Performance Efficiency-sjekkliste:
PE:08 | Optimaliser dataytelsen. Optimaliser datalagre for tiltenkt og faktisk bruk i arbeidsbelastningen. |
---|
Denne veiledningen beskriver anbefalingene for optimalisering av dataytelsen. Optimalisering av dataytelsen handler om å forbedre effektiviteten i behandlingen og lagringen av arbeidsbelastningen. Hver arbeidsbelastningsoperasjon, -transaksjon eller -beregning er vanligvis avhengig av rask og nøyaktig henting, behandling og lagring av data. Når dataytelsen er optimalisert, kjører arbeidsbelastningen problemfritt. Dataytelse som ikke er optimalisert, skaper en dominoeffekt av dårlig ytelseseffektivitet. Når dataytelsen ikke optimaliseres, fører dette til svarforsinkelser, økt ventetid og innskrenket skalerbarhet. Dette går utover effektiviteten til hele arbeidsbelastningen.
Definisjoner
Term | Definisjon |
---|---|
Datalager | En ressurs som lagrer data, for eksempel en database, et objektlager eller en delt filressurs. |
Index | En databasestruktur som gir rask tilgang til elementer. |
Online analysebehandling (OLAP) | En teknologi som organiserer store forretningsdatabaser, støtter kompleks analyse og utfører komplekse analytiske spørringer uten at transaksjonssystemer påvirkes negativt. |
Online transaksjonsbehandling (OLTP) | En teknologi som registrerer forretningssamhandlinger etter hvert som de forekommer i den daglige driften i en organisasjon. |
Partisjonering | Prosessen som fysisk deler inn data i separate datalagre. |
Spørringsjustering | En prosess som optimaliserer hastigheten til en databasespørring. |
Viktige utformingsstrategier
For å kunne optimalisere databruken må du sikre at datalagre optimaliseres for tiltenkt bruk og faktisk bruk i en arbeidsbelastning. Optimalisert databruk kan forbedre spørringsytelsen, redusere ressursforbruket og forbedre den samlede systemeffektiviteten. Tenk deg følgende strategier:
Profildata. Forstå dataene dine og sikre at datamodellen er velegnet til arbeidsbelastningen. Ta hensyn til faktorer som teknikker for datanormalisering og -partisjonering. Når det gjelder effektiv datahenting, passer du på at du velger riktige datatyper og definerer relasjoner mellom tabeller.
Optimaliser spørringsytelsen. Analyser og optimaliser spørringer som kjører i arbeidsbelastningen. Bruk teknikker, for eksempel spørringsoptimalisering og -hurtigbufring. Bruk visninger på serversiden til å forhåndsfiltrere data. Bruk verktøy for ytelsesovervåking til å identifisere flaskehalser, og gjør deretter nødvendige forbedringer.
Overvåk og juster systemet regelmessig. Overvåk ytelsen til arbeidsbelastningen kontinuerlig og finjuster konfigurasjon av datalagring og spørringsoptimaliseringer gjentatte ganger. Analyser systemmåledata, identifiser forbedringsområder og implementer endringer basert på anbefalte fremgangsmåter for ytelsesjustering. Du må kanskje oppdatere spørringene etter hvert som mengden data øker, for å opprettholde ytelsen deres.
Profildata
Dataprofilering omfatter undersøkelse av dataene fra en kilde og innsamling av informasjon om den. Målet er å forstå kvaliteten, strukturen og egenskapene til arbeidsbelastningsdata. Denne prosessen tillater identifisering av problemer, for eksempel manglende verdier, duplikater, inkonsekvente formater og andre avvik.
Når det gjelder effektiv dataprofilering, vurderer du følgende strategier:
Forstå datastrukturen. Undersøk strukturen til dataene, inkludert tabeller, kolonner og relasjoner. Fastsett datatypene, lengdene og begrensningene som gjelder for hver kolonne. Evaluering av datastrukturen hjelper deg å forstå hvordan dataene er organisert, og hvordan de er relatert til andre dataelementer.
Analyser datamengden. Evaluer mengden data for å få et bilde av den totale størrelsen og vekstmønstrene. Fastsett antall oppføringer eller dokumenter og størrelsen på individuelle tabeller eller samlinger. Denne informasjonen hjelper deg å beregne lagringsbehovene og identifisere skalerbarhetsproblemer.
Identifiser datarelasjoner. Utforsk relasjonene mellom dataelementer. Forstå hvordan data er koblet sammen, slik at du kan fastsette hvordan endringer i én tabell eller et dokument kan påvirke relaterte data.
Evaluer datakvaliteten. Evaluer kvaliteten på dataene ved å undersøke ulike faktorer, for eksempel fullstendighet, nøyaktighet, konsekvens og unikhet. Identifiser dataavvik, manglende verdier eller dupliserte oppføringer som kan påvirke dataintegritet og spørringsytelse. Dette trinnet hjelper deg å identifisere områder for datarensing og -forbedring.
Registrer datadistribusjon. Analyser distribusjonen av verdier i hver kolonne for å fastsette datamønstre. Identifiser hyppige og sjeldne verdier, utliggere og dataskjevheter. For å optimalisere spørringsytelsen kan du analysere om det er aktuelt å bruke alternative nøkler til å forbedre ytelsen.
Overvåk dataytelsen
Overvåking av dataytelsen er fremgangsmåten for konsekvent sporing av effektiviteten til datalagre. Det omfatter innsamling og analysering av ytelsesmåledata som spesifikt gjelder dataoperasjoner, ved hjelp av verktøy som er skreddersydd for systemnivået, spesifikke databaser eller overvåkingsløsninger fra tredjeparter. Effektiv overvåking av dataytelse gjør at du proaktivt kan identifisere og redusere potensielle flaskehalser, slik at datarelaterte prosesser og oppgaver fungerer effektivt.
Vurder følgende strategier for å overvåke dataytelsen:
Samle inn dataspesifikke måledata. Samle inn viktige måledata som er direkte relatert til dataytelsen. Disse måledataene omfatter svartid for spørringer og datagjennomstrømming.
Konfigurerdatavarsler. Konfigurer varsler spesifikt for datametrikk. Bruk forhåndsdefinerte terskler eller avvik i disse måleverdiene for å utløse varsler. Varsler gjør at du kan motta varslinger når ytelsesmåledata overskrider akseptable områder eller fungerer unormalt, for eksempel hvis en databasespørring tar lengre tid enn forventet, eller hvis datagjennomstrømmingen reduseres betraktelig. Du kan konfigurere disse varslene ved hjelp av spesialiserte overvåkingsverktøy eller egendefinerte skript.
Diagnostiser problemer med dataytelsen. Se regelmessig gjennom de innsamlede datamåleverdiene for å finne potensielle flaskehalser eller reduksjon i dataoperasjoner. Visualiseringsverktøy eller -instrumentbord kan være uvurderlige i denne prosessen og bidrar til å fremheve trender, flaskehalser og utliggere i dataytelsen. Når du har identifisert problemene, undersøker du årsakene til dem og planlegger nødvendige utbedringstrinn.
Partisjoner data
Partisjonering omfatter oppdeling av store datasett eller store arbeidsbelastninger i mindre, håndterbare delsett. Partisjonering forbedrer dataytelseseffektiviteten ved å distribuere arbeidsbelastningen og forbedre parallell behandling. Den sikrer også mer effektiv datatilgang basert på bestemte behov og spørringsmønstre. Du kan partisjonere data loddrett eller vannrett (kan også kalles fragmentering). Hvis du for eksempel bruker elastiske Dataverse-tabeller, må du vurdere hva som skal være partisjoneringsnøkkel.
Strategi | Definisjon | Eksempel | Brukssaker |
---|---|---|---|
Vertikal partisjonering | Del en tabell inn i mindre tabeller ved å velge bestemte kolonner eller felter for hver partisjon. Hver partisjon representerer et delsett av de fullstendige dataene. | Hvis du har en tabell med kolonne A, B, C og D, kan du opprette en tabell med kolonne A og B og en annen med kolonne C og D. | – En tabell inneholder mange kolonner, men spørringer går ikke til alle kolonnene samlet. – Noen kolonner er større enn andre, og hvis du skiller dem, kan dette øke I/U-ytelsen. – Ulike datadeler har ulike tilgangsmønstre. |
Horisontal partisjonering | Del opp data basert på rader eller områder med verdier (kan også kalles fragmentering). Hver partisjon inneholder et delsett med rader med lignende egenskaper. | Hvis du har en tabell med radene 1 til 1000, kan du opprette en partisjon med radene 1 til 500 og en annen med radene 501 til 1000. | – Et datasett er for stort for én plassering eller server. – Data åpnes basert på bestemte områder eller filtre. – Behov for å distribuere arbeidsbelastningen på tvers av fysiske noder eller servere for å oppnå bedre ytelse. |
Du kan partisjonere dataene ved å følge denne fremgangsmåten:
Analyser data og spørringer. Analyser data og spørringsmønstre for å identifisere egnede partisjonerings- eller fragmenteringsstrategier. Forstå hva slags type data det er snakk om, tilgangsmønstre og distribusjonskrav.
Fastsett en nøkkel. Velg en partisjonerings- eller fragmenteringsnøkkel for å distribuere data på tvers av partisjoner eller fragmenter. Vær nøye når du velger nøkkel basert på dataegenskaper og spørringskrav.
Fastsett logikk. Fastsett en partisjonerings- eller fragmenteringslogikk basert på den valgte nøkkelen. Vurder å dele dataene inn i områder ved å bruke hash-algoritmer eller andre partisjoneringsteknikker.
Optimaliser spørringer
Optimalisering av spørringer finjusterer dem for å redusere dataene som kvalifiseres og returnerte data. Disse justeringene øker effektiviteten og hastigheten på datahentingen. Dette gjør at databasen har en lettere arbeidsbelastning, ressurser fungerer mer effektivt og brukerne får en bedre brukeropplevelse.
Vurder følgende strategier for å optimalisere databasespørringer:
Skriv spørringer på nytt. Se gjennom og analyser komplekse spørringer for å se om de kan skrives om. Vurder å omstrukturere spørringslogikk, fjerne overflødige operasjoner eller forenkle spørringssyntaks.
Unngå N+1-spørringsproblemet. Minimer antall rundturer til databasen ved å bruke koblinger og satsvis henting til å hente relaterte data effektivt.
Omorganiser koblinger. Evaluer og vurder å omorganisere koblingsrekkefølgen for å minimere antall rader i hver koblingsoperasjon. Rekkefølgen du kobler tabeller i, kan påvirke spørringsytelsen.
Hurtigbufre spørringer. Lagre resultatene av spørringer som ofte kjøres, slik at de lett kan brukes på nytt. Hurtigbufring av spørringer fjerner behovet for å kjøre samme spørring gjentatte ganger, og det reduserer spørringsbehandlingskostnadene.
Overvåk og juster. Overvåk måledata for spørringsytelse, for eksempel kjøretid, ressursutnyttelse og spørringsgjennomstrømming. Bruk databaseprofileringsverktøy og overvåkingsfunksjoner til å identifisere spørringer med dårlig ytelse. Bruk denne informasjonen til å optimalisere spørringsytelsen.
Arkiver og slett data
Arkivering og sletting er strategier som effektiviserer datalagring. Arkivering flytter eldre data som ikke brukes ofte, til mer kostnadseffektiv lagring. Hvis du sletter data, fjernes overflødige data permanent. Begge metodene bidrar til ytelseseffektivitet ved å redusere datamengden, øke datatilgangshastigheten og redusere tiden det tar å sikkerhetskopiere og gjenopprette.
- Redusere datavolum: Mindre data betyr raskere behandlingstider, noe som sikrer raske svar på brukerforespørsler.
- Øke datatilgangshastigheten: Et trimmet datasett gir raskere spørringer og datainnhenting, noe som optimaliserer systemets respons.
- Redusere sikkerhetskopierings- og gjenopprettingstider: Mindre datasett fremskynder sikkerhetskopierings- og gjenopprettingsprosesser, minimerer nedetid og sikrer konsistent ytelse.
Arkivering og sletting er svært viktige for å opprettholde toppytelse i datadrevne systemer.
Optimaliser lagringsbelastningen
Optimalisering av lagringsbelastning betyr effektivisering av forespørsler til lagringssystemet. Det bidrar til å fjerne unødvendige forespørsler, forbedrer datahenting og unngår å overvelde lagringssystemet. Optimalisering av lagringsbelastningen sikrer at lagringssystemet holder seg responsivt overfor legitime forespørsler og opprettholder toppytelse. Implementer strategier for å redusere behandlingsbelastningen av datalageret. Vurder strategiene nedenfor for å optimalisere datalagringsbelastningen.
Bruk hurtigbufring
Hurtigbufring lagrer data som ofte åpnes, i et lagringsområde med hurtigtilgang, slik at datahentingen går raskere enn når de hentes fra hovedkilden. Denne teknikken øker dataytelsen ved å redusere tilgangstiden og unngå gjentakende datahentinger. Hurtigbufring forbedrer lesehastigheten og brukersvartiden, særlig for data som åpnes ofte. Denne metoden er mest effektiv for statiske data eller data som sjelden endres.
For å sikre best mulig hurtigbufringseffektivitet bør du vurdere faktorer som utløpspolicyer, slettestrategier og administrasjon av hurtigbufferstørrelse. Juster innstillinger, for eksempel TTL (Time to Live), for å oppnå best mulig ytelse. Hvis du vil bruke en hurtigbuffer til å optimalisere lagringsbelastningen, vurderer du følgende strategier:
Hurtigbufring i minnet: Utfør hurtigbufring i minnet for å lagre ofte brukte data i minnet for rask henting. Du kan bruke denne teknikken for programdata som er kostbare å beregne eller hente fra en database. Hurtigbufring i minnet er nyttig for data du leser ofte, men som ikke endres ofte. Du kan for eksempel bruke variabler i skyflyter eller samlinger i lerretsapper til å hurtigbufre data.
Bufring av databasespørringer: Bruk denne teknikken til å bufre resultatene av databasespørringer for å unngå å kjøre den samme spørringen flere ganger. Hurtigbufring av databasespørringer er nyttig ved komplekse og tidkrevende databasespørringer. Når du hurtigbufrer resultatene av en spørring, returneres påfølgende forespørsler for samme spørring raskt. Vurder også å bruke visninger på serversiden der det er mulig, til å forhåndsfiltrere data til de som er relevante for spørringen.
Nettverksbufring for innholdslevering: Bruk denne teknikken til å bufre nettinnhold på distribuerte nettverksservere for å redusere ventetiden og forbedre innholdsleveringen. Hurtigbufring av innholdsleveringsnettverk er effektivt for statisk innhold, for eksempel bilder, CSS-filer og JavaScript-filer. Innholdsleveringsnettverk lagrer kopier av innhold på flere steder over hele verden, slik at brukere kan få tilgang til innholdet fra en server som er i nærheten av dem geografisk.
Optimaliser dataoppdateringer
Optimalisering av dataoppdateringer omfatter evaluering av dataoppdateringene som blir utført, for å sikre at de er effektive. Oppdateringer kan påvirke ytelsen mer enn andre operasjoner fordi de kan utløse unødvendig arbeid og føre til låsekonflikter.
Vurder følgende for å evaluere hvordan dataoppdatering skal optimaliseres:
Data endres. Optimaliser automatisering slik at den bruker forhåndsavbildninger av dataene eller filtre for å minimere arbeidet når det ikke har skjedd noen faktiske endringer. Unngå å utløse automatisering for uendrede data.
Automatisering. Evaluer når og hvordan oppdateringer utløses basert på dataendringer, og optimaliser utløserne for å ta med et filter. Eksempel: Utløs automatisering bare når et bestemt felt i datakilden endres. Evaluer oppdateringer som utløser automatiseringer trinnvist flere ganger. Vurder om du i stedet kan lage en egen operasjon som kan håndtere all behandling. Hvis en ordre leveres og leveringsdatoen og sporingsnummeret oppdateres separat, kan for eksempel begge oppdateres samtidig i en egendefinert «ShipOrder»-operasjon.
Vranglåser. Evaluer trege oppdateringsoperasjoner som kan føre til problemer på grunn av flere flyter som oppdaterer de samme dataene i ulike rekkefølger. Denne ineffektiviteten kan føre til låsekonflikter eller til og med potensielle vranglåser, som kan føre til unødvendig etterbehandling. Oppdater de ulike ressursene i samme rekkefølge for å minimere konflikter.
Masseoppdateringer. Hvis du kjører operasjoner på flere rader i en tabell, kan du vurdere å bruke masseoperasjoner.
Optimaliser dataflytting og -behandling
Optimalisering av dataflytting og -behandling omfatter forbedring av effektiviteten og ytelsen til operasjoner relatert til uttrekking, transformasjon, lasting og behandling av data. Vurder følgende viktige aspekter ved optimalisering av dataflytting og -behandling:
Optimalisering av ekstrahering, transformering og lasting (ETL): Optimaliser ETL-prosesser for å minimere behandlingstiden. Du kan effektivisere uttrekkingen, implementere effektive transformasjonsalgoritmer og optimalisere innlastingsprosessen. Når du gjør hver enkelt trinn effektivt, optimaliserer du den samlede arbeidsflyten.
Parallell prosessering: Bruk parallelle prosesseringsteknikker for å forbedre ytelsen. Når du distribuerer databehandlingsoppgaver på tvers av flere tråder eller noder, kan du dele opp og behandle arbeidsbelastningen samtidig, som fører til rask behandling.
Satsvis behandling: Grupper lignende oppgaver sammen for å redusere overhead forårsaket av gjentatte operasjoner. Behandle flere oppgaver i en bunke for å redusere den samlede behandlingstiden.
Utform for datanærhet
Datanærhet henviser til den strategiske plasseringen av data nærmere brukerne eller tjenestene som bruker dem oftest. Hvis du reduserer den fysiske eller logiske avstanden mellom dataene og brukerne av dataene, sikrer du raskere datatilgang og forbedret respons. Du kan optimalisere utforming for nærhet ved å vurdere disse strategiene:
Evaluer datatilgangsmønstre: Vurder arbeidsbelastningens tilgangsmønstre og ofte brukte data. Denne analysen kan hjelpe deg å avgjøre hvor det er best å plassere data.
Velg løsninger som støtter dataflytting: Vurder løsninger som tilbyr dynamisk dataflytting basert på endrede tilgangsmønstre, noe som sikrer optimal dataplassering.
Velg løsninger som støtter datasynkronisering: Hvis du betjener en distribuert brukerbase, velger du løsninger som aktiverer datasynkronisering på tvers av de ulike områdene, for å sikre at datareplikaer er tilgjengelige i nærheten av brukere.
Avveining: Hvis underliggende data endres ofte, implementer en mekanisme for ugyldiggjøring av hurtigbuffer for å sikre at de bufrede dataene forblir oppdatert.
Tilrettelegging for Power Platform
Overvåk dataytelse: Hvis du vil overvåke dataytelsen, bør du vurdere å bruke Azure Overvåk til å samle inn og analysere infrastrukturmåledata, logger og programdata. Du kan integrere Monitor med andre tjenester, for eksempel Application Insights. Application Insights har overvåking av programytelse og støtter mange ulike plattformer.
Application Insights samler inn bruks- og ytelsesdata. Du kan bruke Log Analytics til å korrelere disse dataene med konfigurasjons- og ytelsesdata på tvers av Azure-ressurser. Dataflyten fra Application Insights for Dataverse leverer for øyeblikket ytelsesdata relatert til innkommende Dataverse API-oppkall, Dataverse-kjøringsoppkall for programtillegg og Dataverse-SDK-oppkall.
Optimaliser spørringsdatamønstre i lerretsapper: Følg den dokumenterte veiledningen og forslagene. Se Optimaliserte spørringsdatamønstre i Power Apps.
Optimaliser hvordan du tilpasser, utvider eller integrerer med Dataverse: Følg dokumenterte beste praksis og veiledning. Se Anbefalte fremgangsmåter og veiledning når du bruker Microsoft Dataverse.
Optimaliser databasespørringer og indeksytelse: Bruk innsiktsfunksjonen for spørringsytelse i Azure SQL Database til å optimalisere spørringer, tabeller og databaser. Du kan også bruke denne funksjonen til å identifisere og feilsøke problemer med spørringsytelse.
Når det gjelder relasjonsdatabaser, følger du retningslinjene for indeksutforming, indeksveiledningen for SQL Server og indeksveiledningen for Azure Cosmos DB. Bruk SQL Database til å utføre automatisk justering for spørringer for å forbedre ytelsen.
Når det gjelder SQL-databaser, bør du regelmessig omorganisere indekser eller bygge dem på nytt. Identifiser trege spørringer og juster dem for å forbedre ytelsen. Mange databasemotorer har funksjoner for spørringsjustering. Hvis du vil ha mer informasjon, kan du se de anbefalte fremgangsmåtene for spørringsytelse.
Azure Cosmos DB har en standard indekseringspolicy som indekserer hver egenskap for hvert element og håndhever områdeindekser for alle strenger eller tall. Denne policyen gir deg en effektiv spørringsytelse, og du trenger ikke å administrere indekser på forhånd.
Optimaliser lagringsbelastningen: Mange Azure databasetjenester støtter lesereplikaer. Tilgjengeligheten og konfigurasjonen av lesereplikaer varierer avhengig av Azure-databasetjenesten. Se den offisielle dokumentasjonen for hver tjeneste for å forstå detaljene og alternativene.
Relatert informasjon
- Oversikt over å lage ytelse Power Apps
- Velg en Azure datalager for søknaden din
- Tilpasse en Power Automate flyt som utløser ved å legge til betingelser
- Dataverse elastiske bord
Sjekkliste for ytelseseffektivitet
Se hele settet med anbefalinger.