Anbefalinger til optimering af dataydeevne
Gælder for denne Power Platform anbefaling af Well-Architected Performance Efficiency-tjekliste:
PE:08 | Optimere ydeevnen for data. Optimer datalagre til den tilsigtede og faktiske brug i arbejdsbelastningen. |
---|
I denne vejledning beskrives anbefalingerne til optimering af dataydeevne. Optimering af dataydeevnen handler om at forfine effektiviteten, med hvilken arbejdsbelastningen behandler og lagrer data. Alle arbejdsbelastninger, -transaktioner eller -beregninger afhænger typisk af hurtig og nøjagtig hentning, behandling og lagring af data. Når dataydeevnen optimeres, kører arbejdsbelastningen problemfrit. Kompromitteret dataydeevne skaber en dominoeffekt af dårlig ydeevne. Hvis dataydeevnen ikke optimeres, resulterer det i forsinkelser i svartiden, øget ventetid og begrænset skalerbarhed. Den truer effektiviteten af hele arbejdsbelastningen.
Definitioner
Begreb | Definition |
---|---|
Datalager | En ressource, der gemmer data, f.eks. en database, et objektlager eller et filshare. |
Indeks | En databasestruktur, der giver hurtig adgang til elementer. |
Onlineanalysebehandling (OLAP) | En teknologi, der organiserer store forretningsdatabaser, understøtter kompleks analyse og udfører komplekse analytiske forespørgsler uden at påvirke transaktionssystemer negativt. |
Behandling af online behandling (OLTP) | En teknologi, der registrerer forretningsinteraktioner, når de optræder i en organisations daglige drift. |
Partitionering | Processen med at opdele data fysisk i separate datalagre. |
Finjustering af forespørgsler | En proces, der optimerer hastigheden af en databaseforespørgsel. |
Vigtigste designstrategier
Hvis du vil optimere dataforbruget, skal du sikre, at datalagre optimeres til den tilsigtede brug og til den faktiske brug i en arbejdsbelastning. Optimeret dataforbrug kan forbedre forespørgselsydeevnen, reducere ressourceforbruget og forbedre den overordnede systemeffektivitet. Overvej følgende strategier:
Profildata. Forstå dataene, og sørg for, at datamodellen er velegnet til din arbejdsbelastning. Overvej faktorer som f.eks. data normalisering og partitioneringsteknikker. Du kan opnå en effektiv datasøgning ved at sikre, at du vælger de rette datatyper og definerer relationer mellem tabellerne.
Optimer ydeevne i forespørgsel. Analyser og optimere forespørgsler, der kører i arbejdsbelastningen. Brug teknikker, f.eks. optimering af forespørgsler og cachelagring. Brug visninger på serversiden til at forudfiltrere data. For at identificere flaskehalse, brug værktøjer til overvågning af ydeevnen og foretag derefter de nødvendige forbedringer.
Overvåg og juster jævnligt systemet. Du kan løbende overvåge arbejdsbelastningens ydeevne og ændre konfigurationen af datalageret og optimeringer af forespørgsler. Baseret på bedste praksis for optimering af ydeevnen kan du analysere systemmetrik, identificere områder med forbedringer og implementere ændringer. Efterhånden som dataene vokser, skal du muligvis opdatere forespørgslerne, så de stadig præsterer godt.
Profildata
Dataprofilering indebærer undersøgelse af data fra en kilde og indsamling af oplysninger om dem. Målet er at forstå kvaliteten, strukturen og egenskaberne for arbejdsbelastningsdata. Denne proces gør det muligt at identificere problemer som manglende værdier, dubletter, inkonsistente formater og andre uregelmæssigheder.
Hvis du vil have en effektiv dataprofilering, skal du overveje følgende strategier:
Forstå dartastrukturen. Undersøg strukturen af dataene, herunder tabeller, kolonner og relationer. Fastsæt de datatyper, længder og begrænsninger, der gælder for de enkelte kolonner. Evaluering af datastruktur hjælper dig med at forstå, hvordan dataene er organiseret, og hvordan de er relateret til andre dataelementer.
Analysere datamængden. Vurdér mængden af data for at forstå den overordnede størrelse og de overordnede vækstmønstre. Fastsætte antallet af poster eller dokumenter og størrelsen på individuelle tabeller eller samlinger. Du kan bruge disse oplysninger til at vurdere lagerkrav og identificere problemer med skalerbarhed.
Identificere datarelationer. Undersøg relationer mellem dataelementerne. Forstå, hvordan data er forbundet, så du kan bestemme, hvordan ændringer i én tabel eller et dokument kan påvirke relaterede data.
Vurdere datakvalitet. Evaluer kvaliteten af dine data ved at undersøge faktorer som fuldstændighed, nøjagtighed, ensartethed og entydighed. Identificer datauregelmæssigheder, manglende værdier eller dubletposter, der kan påvirke dataintegritet og forespørgselsydeevne. Dette trin hjælper dig med at identificere områder for datarensning og forbedring.
Distribution af dataindlæsning. Analyser distributionen af værdier i de enkelte kolonner for at fastlægge datamønstre. Identificer hyppige og sjældne værdier, afvigende værdier og data skævheder. Hvis du vil optimere forespørgselsydeevnen, skal du analysere, om alternative nøgler er passende for at opnå en forbedret ydeevne.
Overvåg dataydeevne
Overvågning af dataydeevne er praksis for konsekvent at spore effektiviteten i datalagre. Den omfatter indsamling og analyse af ydelsesmetrikværdier, der er specifikke for datahandlinger, ved hjælp af værktøjer, der er skræddersyet til løsninger på systemniveau, databasespecifikke eller tredjepartsovervågningsløsninger. Effektiv overvågning af dataydeevnen giver dig mulighed for proaktivt at identificere og afhjælpe potentielle flaskehalse og dermed sikre, at datarelaterede processer og opgaver er effektive.
Hvis du vil overvåge dataydeevnen, skal du overveje følgende strategier:
Indhent dataspecifikke metrikværdier. Saml nøglemetrik, der direkte relaterer til dataydeevne. Disse metrikværdier omfatter forespørgselssvartider og dataoverførselshastighed.
Konfigurerdataadvarsler. Konfigurer beskeder specifikt for datametrikker. Brug foruddefinerede tærskelværdier eller anomalier i disse metrikværdier til at udløse alarmer. Alarmer giver dig mulighed for at modtage beskeder, når ydelsesmetrikværdier overskrider de acceptable intervaller eller viser unormal adfærd; Det kan f.eks. være, hvis en databaseforespørgsel tager længere tid end forventet, eller hvis dataoverførselshastigheden falder væsentligt. Du kan konfigurere disse advarsler ved hjælp af særlige overvågningsværktøjer eller brugerdefinerede scripts.
Diagnosticering af problemer med dataydeevne. Gennemgå jævnligt de indsamlede datametrikværdier for at identificere potentielle ydelsesflaskehalse eller nedbrydning i datahandlinger. Visualiseringsværktøjer eller -dashboards kan hjælpe dig med at fremhæve tendenser, flaskehalse og udeliggere i dataydeevnen. Når disse er identificeret, skal du undersøge de grundlæggende årsager til disse problemer og planlægge passende trin til afhjælpning af problemet.
Partitionsdata
Partitionering indebærer, at store datasæt eller store arbejdsbelastninger opdeles i mindre, håndterbare delmængder. Partitionering forbedrer dataydeevnen ved at distribuere arbejdsbelastningen og forbedre parallel behandling. Det sikrer også en mere effektiv dataadgang baseret på specifikke behov og forespørgselsmønstre. Du kan partitionere data lodret eller vandret (også kaldet sharding). Hvis du f.eks. bruger Dataverse Elastic tables, skal du overveje, hvad der skal være partitionsnøgle.
Strategi | Definition | Eksempel | Bruge sager |
---|---|---|---|
Lodret opdeling | Opdel en tabel i mindre tabeller ved at vælge bestemte kolonner eller felter for hver partition. De enkelte partitioner repræsenterer et delsæt af samtlige data. | Hvis du har en tabel med kolonnerne A, B, C og D, kan du oprette én tabel med kolonnerne A og B og en anden med kolonnerne C og D. | - En tabel indeholder mange kolonner, men forespørgsler tilgår ikke alle kolonner på samme tid. - Nogle kolonner er større end andre, og opdelingen af dem kan øge ydeevnen i I/O. - Forskellige datadele har forskellige adgangsmønstre. |
Vandret opdeling | Opdeling af data på baggrund af rækker eller værdiintervaller (også kendt som sharding). Hver partition indeholder et delsæt af rækker med lignende egenskaber. | Hvis du har en tabel med rækker 1 til 1000, kan du oprette én partition med rækker 1 til 500 og en anden med rækker 501 til 1000. | - Et datasæt er for stor til en enkelt placering eller server. – Der opnås adgang til data baseret på bestemte områder eller filtre. - Har brug for at distribuere arbejdsbelastningen på tværs af fysiske noder eller servere for at forbedre ydeevnen. |
Hvis du vil partitionere dataene, skal du overveje følgende trin:
Analysere data og forespørgsler. Analysér data- og forespørgselsmønstre for at identificere egnede partitioner eller strategier for opdeling. Forstå naturen af dataene, adgangsmønstrene og distributionskravene.
Find en nøgle. Vælg en partitions- eller nøgle for opdeling for at distribuere data på tværs af partitioner eller opdelinger. Vælg omhyggeligt nøglen på baggrund af dataegenskaber og forespørgselskrav.
Definer logik. Bestem en partitions- eller shardinglogik baseret på den valgte nøgle. Overvej at opdele dataene i områder, anvende hashing-algoritmer eller bruge andre partitionsteknikker.
Optimer forespørgsler
Optimering af forespørgsler forfiner forespørgsler for at reducere de data, der kvalificerer, og de returnerede data. Disse justeringer øger effektiviteten og hastigheden af hentning af data. Resultatet er, at databasen har en lettere arbejdsbelastning, ressourcer fungerer mere effektivt, og at brugerne får en mere problemfri interaktion.
Hvis du vil optimere databaseforespørgsler, skal du overveje følgende strategier:
Omskriv forespørgsler. Gennemse og analysér komplekse forespørgsler for at identificere muligheder for at omskrive dem. Overvej omstrukturering af forespørgselslogik, fjerne overflødige handlinger eller forenkle forespørgselssyntaksen.
Undgå problemer med N+1-forespørgslen. Minimer antallet af returrunder til databasen ved at bruge joinforbindelser og batchhentning til at hente relaterede data effektivt.
Omarranger joinforbindelser. Evaluer og overvej at omarrangere joinforbindelsesrækkefølge for at minimere antallet af rækker i hver joinforbindelseshandling. Den rækkefølge, du joinforbinder tabeller i, kan påvirke forespørgselsydeevnen.
Cacheforespørgsler. Gem resultaterne af hyppigt kørt forespørgsler, så de er nemme at genbruge. Cachelagring af forespørgsler eliminerer behovet for at køre den samme forespørgsel igen og igen, og den reducerer overhead ved forespørgselsbehandling.
Overvåg og juster. Overvåg metrikværdier for forespørgselsydeevne, f.eks. kørsel, ressourceforbrug og gennemløb for forespørgsler. Brug værktøjer til databaseprofilering og overvågningsfunktionaliteter til at identificere dårligt præsterende forespørgsler. Brug disse oplysninger til at optimere forespørgselsydeevnen.
Arkivér og rens data
Arkivering og udrømning er strategier, der strømliner datalageret. Arkivering flytter ældre data, som sjældent tilgås, til mere omkostningseffektivt lager. Overskydende data fjernes permanent. Begge metoder bidrager til ydeevneeffektivitet ved at reducere datamængden, øge dataadgangshastigheden og reducere sikkerhedskopierings- og gendannelsestider.
- Reduktion af datamængde: Mindre data betyder hurtigere behandlingstider, hvilket sikrer hurtige svar på brugeranmodninger.
- Øget dataadgangshastighed: Et trimmet datasæt giver mulighed for hurtigere forespørgsler og datahentning, hvilket optimerer systemets reaktionsevne.
- Reduktion af backup- og gendannelsestider: Mindre datasæt fremskynder sikkerhedskopierings- og gendannelsesprocesser, minimerer nedetid og sikrer ensartet ydeevne.
Arkivering og sletning er med til at vedligeholde effektiviteten af optimal ydeevne i databaserede systemer.
Optimer lagerbelastningen
Optimering af lagerbelastningen betyder, at anmodninger til lagersystemet strømlines. Det er med til at fjerne unødvendige forespørgsler, forbedre hentning af data og undgår at overbelaste lagersystemet. Optimering af lagerbelastningen sikrer, at lagersystemet forbliver responsivt på legitime forespørgsler og bevarer optimal ydeevne. Implementer strategier for at reducere behandlingsbelastningen på datalager. Hvis du vil optimere datalager belastning, skal du overveje de strategier, der følger.
Bruge cachelagring
Cachelagring lagrer almindeligt tilgængelige data i et lagerområde med hurtig adgang, hvilket gør det hurtigere at hente data end at hente det fra hovedkilden. Denne teknik øger dataydeevnen ved at reducere adgangstiderne og undgå tilbagevendende datahentning. Cachelagring øger læsehastigheden og brugers svartider, især for data, der ofte åbnes. Denne metode er mest effektiv på statiske data eller data, der sjældent ændres.
Hvis du vil sikre optimal cachelagringseffektivitet, skal du overveje faktorer som udløbspolitikker, udsmidningsstrategier og administration af cachestørrelsen. Juster indstillingerne, f.eks. TTL (time to live), for at opnå optimal ydeevne. Hvis du vil bruge en cache til at optimere lagerbelastningen, skal du overveje følgende strategier:
Cachelagring i hukommelsen: Udfør cachelagring i hukommelsen for at gemme ofte anvendte data i hukommelsen til hurtig hentning. Du kan bruge denne teknik til programdata, der er dyrt at beregne eller hente fra en database. Cachelagring i hukommelsen er nyttig til data, du læser ofte, men som ikke ændres ofte. Du kan f.eks. bruge variabler i skyforløb eller samlinger i apps på lærred til at cachelagre data.
Cachelagring af databaseforespørgsler: Brug denne teknik til at cachelagre resultaterne af databaseforespørgsler for at undgå at køre den samme forespørgsel flere gange. Cachelagring af databaseforespørgsler er nyttig i forbindelse med komplekse og tidskrævende databaseforespørgsler. Når du cachelagrer resultaterne af en forespørgsel, returneres efterfølgende forespørgsler på samme forespørgsel hurtigt. Overvej også at bruge visninger på serversiden, hvor det er muligt at forudfiltrere data for at indskrænke data, der er relevante for forespørgslen.
Indlæsning af netværksindlæsning i buffer: Brug denne teknik til at indlæse webindhold i bufferen på distribuerede netværksservere for at reducere ventetiden og forbedre leveringen af indhold. Cachelagring i indholdsleveringsnetværk er effektiv til statisk indhold, f.eks. billeder, CSS-filer og JavaScript-filer. Indholdsleveringsnetværk gemmer kopier af indhold flere steder verden over, så brugere har adgang til indholdet fra en server, der geografisk er i nærheden af dem.
Optimering af dataopdateringer
Optimering af dataopdateringer indebærer evaluering af de opdateringer af data, der udføres for at sikre, at de er effektive og hurtige. Opdateringer kan påvirke ydeevnen mere end andre handlinger, da de kan udløse unødvendigt arbejde og forårsage låsningskonflikter.
Hvis du vil evaluere, hvordan du optimerer dataopdateringer, skal du overveje følgende:
Data ændres. Optimer automatiseringen, så der bruges forudbilleder af dataene eller filtrene for at minimere arbejdet, når der ikke er sket nogen egentlig ændring. Undgå at udløse automatisering for umodificerede data.
Automatisering. Evaluér, hvornår og hvordan opdateringer udløses på baggrund af dataændringer, og optimer udløsere til at inkludere et filter. Du kan f.eks. kun udløse automatiseringen, når et bestemt felt i datakilde ændres. Evaluer opdateringer, der gradvist udløser automatisering flere gange. Overvej i stedet, om du kan oprette en brugerdefineret operation for at håndtere al behandling. Hvis en ordre f.eks. leveres, og leveringsdato og sporingsnummer opdateres separat, kan de begge opdateres samtidig i en brugerdefineret "ShipOrder"-operation.
Dødvande. Evaluer operationer til langsom opdatering, der kan give problemer på grund af flere flow, der opdaterer de samme data i forskellige sekvenser. Denne ineffektivitet kan føre til låsekonflikter eller endda potentielle deadlocks, hvilket kan resultere i unødvendigt omarbejde. Opdater de forskellige ressourcer i samme rækkefølge for at minimere konflikt.
Masseopdateringer. Hvis du kører handlinger på flere rækker i en tabel, skal du overveje at bruge masseopdateringer.
Optimering af dataflytning og -behandling
Optimering af dataflytning og -behandling indebærer en forbedring af effektiviteten og ydeevnen i handlinger vedrørende dataudtrækning, transformering, indlæsning og behandling. Overvej følgende nøgleaspekter i optimering af dataflytning og -behandling:
Optimering af udtræk, transformering og indlæsning (ETL): Optimer ETL-processer for at minimere behandlingstiden. Du kan strømline udtrækningsprocessen, implementere effektive transformeringsalgoritmer og optimere indlæsningsprocessen. Når du gør hvert trin effektiv, optimerer du den overordnede arbejdsproces.
Parallel behandling: Brug parallelle behandlingsteknikker til at forbedre ydeevnen. Når du distribuerer databehandlingsopgaver på tværs af flere tråde eller noder, kan du dele og behandle arbejdsbelastningen samtidig, hvilket resulterer i hurtig behandling.
Batchbehandling: Gruppér lignende opgaver sammen for at reducere omkostninger forårsaget af gentagne operationer. Behandle flere opgaver i en batch for at reducere den samlede behandlingstid.
Design til datanærhed
Datanærhed henviser til den strategiske placering af data, der er tættere på de brugere eller tjenester, der oftest har adgang til dem. Hvis du reducerer den fysiske eller logiske afstand mellem dataene og brugerne, sikres der hurtigere dataadgang og forbedret reaktionstid. Hvis du vil optimere design med henblik på nærhed, skal du overveje disse strategier:
Evaluer dataadgangsmønstre: Vurder din arbejdsbelastnings adgangsmønstre og ofte anvendte data. Denne analyse kan hjælpe dig med at finde ud af, hvor du skal placere data for at opnå maksimal fordel.
Vælg løsninger, der understøtter dataflytning: Overvej løsninger, der tilbyder dynamisk dataflytning baseret på ændrede adgangsmønstre, hvilket sikrer optimal datapositionering.
Vælg løsninger, der understøtter datasynkronisering: Hvis du betjener en distribueret brugerbase, skal du vælge løsninger, der muliggør datasynkronisering på tværs af de forskellige områder, for at sikre, at datareplikaer er tilgængelige i nærheden af brugerne.
Afvejning: Hvis underliggende data ændres ofte, skal du implementere en mekanisme til ugyldiggørelse af cache for at sikre, at de cachelagrede data forbliver opdaterede.
Power Platform-processtyring
Overvåg dataydeevne: Hvis du vil overvåge dataydeevnen, kan du overveje at bruge Azure Overvåg til at indsamle og analysere infrastrukturmålepunkter, logge og programdata. Du kan integrere Monitor med andre tjenester som f.eks. Application Insights. Application Insights indeholder overvågning af programmets ydeevne og understøtter mange platforme.
Application Insights Indsamler brugs- og ydelsesdata. Du kan bruge Log Analytics til at korrelere dataene med konfigurations- og ydelsesdata på tværs af Azure-ressourcer. Application Insights til Dataverse-datastrømmen indeholder i øjeblikket ydelsesdata vedrørende indgående Dataverse-API-kald, Dataverse-kald til plug-in-kørsel og Dataverse-SDK-kald.
Optimer mønstre for forespørgselsdata i lærredapps: Følg den dokumenterede vejledning og de dokumenterede forslag. Se Optimerede forespørgselsdatamønstre i Power Apps.
Optimer, hvordan du tilpasser, udvider eller integrerer med Dataverse: Følg de dokumenterede bedste fremgangsmåder og vejledninger. Se Bedste fremgangsmåder og retningslinjer for brug af Microsoft Dataverse.
Optimer databaseforespørgsler og indeksydeevne: Brug funktionen til indsigt i forespørgselsydeevne i Azure SQL Database til at optimere forespørgsler, tabeller og databaser. Du kan også bruge denne funktion til at identificere og foretage fejlfinding af problemer med forespørgselsydeevnen.
I forbindelse med relationsdatabaser skal du følge retningslinjerne for indeksdesign, SQL Server-indeksvejledningen og Azure Cosmos DB-indeksvejledningen. Brug SQL Database til at udføre automatisk justering af forespørgsler for at forbedre ydeevnen.
I forbindelse med SQL-databaser bør du jævnligt omorganisere eller genopbygge indekser. Identificere langsomt kørende forespørgsler, og justér dem til at forbedre ydeevnen. Mange databasemotorer har funktioner til forespørgselsoptimering. Du kan finde flere oplysninger ved at gå til de bedste fremgangsmåder for forespørgselsperformance.
Azure Cosmos DB har en standardindekseringspolitik, der indekserer alle egenskaber for hvert element, og som gennemtvinger intervalindeks for enhver streng eller tal. Denne politik giver dig en effektiv forespørgselsydeevne, og du behøver ikke at administrere indeks i forvejen.
Optimer lagerbelastningen: Mange Azure databasetjenester understøtter læsereplikaer. Tilgængeligheden og konfigurationen af læsekopier varierer, afhængigt af Azure-databasetjenesten. Se den officielle dokumentation for hver enkelt tjeneste for at få en forståelse af detaljerne og mulighederne.
Relaterede oplysninger
- Oversigt over oprettelse af performant Power Apps
- Vælg et Azure datalager til din ansøgning
- Tilpas en Power Automate flowudløser ved at tilføje betingelser
- Dataverse elastiske borde
Kontrolliste til ydeevneeffektivitet
Se det fuldstændige sæt anbefalinger.