Aanbevelingen voor het optimaliseren van gegevensprestaties
Van toepassing op deze aanbeveling voor de checklist voor goed gearchitecteerde prestatie-efficiëntie: Power Platform
Lichamelijke opvoeding:08 | Optimaliseer gegevensprestaties. Optimaliseer datastores voor het beoogde en daadwerkelijke gebruik ervan in de werklast. |
---|
In deze handleiding worden de aanbevelingen voor het optimaliseren van gegevensprestaties beschreven. Bij het optimaliseren van de gegevensprestaties gaat het om het verfijnen van de efficiëntie waarmee de werklast gegevens verwerkt en opslaat. Elke werklastbewerking, transactie of berekening is doorgaans afhankelijk van het snel en nauwkeurig ophalen, verwerken en opslaan van gegevens. Wanneer de gegevensprestaties worden geoptimaliseerd, verloopt de werklast soepel. Gecompromitteerde gegevensprestaties veroorzaken een domino-effect van slechte prestatie-efficiëntie. Als de gegevensprestaties niet worden geoptimaliseerd, resulteert dit in responsvertragingen, een verhoogde latentie en beperkte schaalbaarheid. Het brengt de efficiëntie van de gehele werklast in gevaar.
Definities
Term | Definitie |
---|---|
Gegevensopslag | Een bron waarin gegevens worden opgeslagen, zoals een database, objectopslag of bestandsshare. |
Index | Een databasestructuur die snelle toegang tot items biedt. |
Online analytische verwerking (OLAP) | Een technologie die grote bedrijfsdatabases organiseert, complexe analyses ondersteunt en complexe analytische zoekopdrachten uitvoert zonder negatieve gevolgen voor transactiesystemen. |
Online transactieverwerking (OLTP) | Een technologie die zakelijke interacties registreert zoals deze plaatsvinden in de dagelijkse bedrijfsvoering van een organisatie. |
Partitionering | Het proces waarbij gegevens fysiek worden verdeeld in afzonderlijke gegevensopslagplaatsen. |
Queryafstemming | Een proces dat de snelheid van een databasequery optimaliseert. |
Belangrijke ontwerpstrategieën
Om het datagebruik te optimaliseren, moet u ervoor zorgen dat datastores zijn geoptimaliseerd voor het beoogde gebruik en voor het daadwerkelijke gebruik ervan in een werklast. Geoptimaliseerd datagebruik kan de prestaties van zoekopdrachten verbeteren, het verbruik van bronnen verminderen en de algehele systeemefficiëntie verbeteren. Bekijk de volgende strategieën:
Profielgegevens. Begrijp uw gegevens en zorg ervoor dat uw gegevensmodel geschikt is voor uw workload. Houd rekening met factoren zoals gegevensnormalisatie en partitietechnieken. Voor efficiënt ophalen van gegevens moet u ervoor zorgen dat u de juiste gegevenstypen selecteert en relaties tussen tabellen definieert.
Optimaliseer de queryprestaties. Analyseer en optimaliseer query's die in de workload worden uitgevoerd. Gebruik technieken zoals query-optimalisatie en caching. Gebruik weergaven aan de serverzijde om gegevens vooraf te filteren. Om knelpunten te identificeren, gebruikt u tools voor prestatiemonitoring en brengt u vervolgens de nodige verbeteringen aan.
Controleer en stem het systeem regelmatig af. Bewaak de prestaties van uw workload voortdurend en bouw voort op de gegevensopslagconfiguratie en queryoptimalisaties. Op basis van best practices voor het afstemmen van prestaties analyseert u systeemstatistieken, identificeert u verbeterpunten en implementeert u wijzigingen. Naarmate de gegevens toenemen, moet u mogelijk uw query's bijwerken om optimaal te blijven presteren.
Profielgegevens
Bij dataprofilering gaat het om het onderzoeken van de gegevens uit een bron en het verzamelen van informatie daarover. Het doel is om de kwaliteit, structuur en kenmerken van werklastgegevens te begrijpen. Met dit proces kunnen problemen worden geïdentificeerd, zoals ontbrekende waarden, duplicaten, inconsistente formaten en andere afwijkingen.
Voor effectieve gegevensprofilering kunt u de volgende strategieën overwegen:
Begrijp de gegevensstructuur. Onderzoek de structuur van uw gegevens, inclusief tabellen, kolommen en relaties. Bepaal de gegevenstypen, lengtes en beperkingen die op elke kolom worden toegepast. Evaluatie van de gegevensstructuur helpt u te begrijpen hoe de gegevens zijn georganiseerd en hoe deze zich verhouden tot andere gegevenselementen.
Analyseer het gegevensvolume. Beoordeel het volume van uw gegevens om inzicht te krijgen in de algehele omvang en groeipatronen. Bepaal het aantal records of documenten en de grootte van individuele tabellen of verzamelingen. Met deze informatie kunt u de opslagvereisten inschatten en schaalbaarheidsproblemen identificeren.
Identificeer gegevensrelaties. Ontdek de relaties tussen gegevenselementen. Begrijp hoe gegevens met elkaar verbonden zijn, zodat u kunt bepalen hoe wijzigingen in één tabel of document van invloed kunnen zijn op gerelateerde gegevens.
Beoordeel de gegevenskwaliteit. Evalueer de kwaliteit van uw gegevens door factoren als volledigheid, nauwkeurigheid, consistentie en uniciteit te onderzoeken. Identificeer gegevensafwijkingen, ontbrekende waarden of dubbele records die de gegevensintegriteit en queryprestaties kunnen beïnvloeden. Met deze stap kunt u gebieden identificeren waarop gegevens kunnen worden opgeschoond en verbeterd.
Leg de gegevensdistributie vast. Analyseer de verdeling van waarden binnen elke kolom om gegevenspatronen te bepalen. Identificeer frequente en zeldzame waarden, uitschieters en gegevensscheefheden. Om de queryprestaties te optimaliseren, analyseert u of alternatieve sleutels geschikt zouden zijn om betere prestaties te leveren.
Gegevensprestaties bijhouden
Monitoring van gegevensprestaties is de praktijk waarbij de efficiëntie van gegevensopslag consistent wordt gevolgd. Het omvat het verzamelen en analyseren van specifieke prestatiestatistieken voor gegevensbewerkingen, met behulp van tools op maat voor bewaking op systeemniveau, databasespecifiek of oplossingen van derden. Dankzij een effectieve bewaking van gegevensprestaties kunt u potentiële knelpunten proactief identificeren en verhelpen, zodat u ervoor kunt zorgen dat gegevensgerelateerde processen en taken efficiënt zijn.
Overweeg de volgende strategieën om de gegevensprestaties te monitoren:
Verzamel gegevensspecifieke metrische gegevens. Verzamel belangrijke metrische gegevens die rechtstreeks verband houden met gegevensprestaties. Deze metrische gegevens omvatten de responstijden van query's en de gegevensdoorvoer.
Stelgegevenswaarschuwingen in. Stel waarschuwingen in die specifiek zijn voor gegevensstatistieken. Gebruik vooraf gedefinieerde drempels of afwijkingen in deze statistieken om waarschuwingen te triggeren. Met waarschuwingen kunt u meldingen ontvangen wanneer prestatiestatistieken acceptabele bereiken overschrijden of abnormaal gedrag vertonen; bijvoorbeeld als een databasequery langer duurt dan verwacht of als de gegevensdoorvoer aanzienlijk afneemt. U kunt deze waarschuwingen instellen met behulp van gespecialiseerde monitoringtools of aangepaste scripts.
Achterhaal de oorzaak van prestatieproblemen. Controleer regelmatig de verzamelde gegevensstatistieken om potentiële knelpunten in de prestaties of verslechtering van de gegevensbewerkingen te identificeren. Visualisatietools of dashboards kunnen van onschatbare waarde zijn in dit proces en helpen trends, knelpunten en uitschieters in de gegevensprestaties onder de aandacht te brengen. Zodra deze zijn geïdentificeerd, onderzoekt u de hoofdoorzaken van deze problemen en plant u passende herstelstappen.
Gegevens partitioneren
Bij het partitioneren worden grote datasets of grote werklasten in kleinere, beheersbare subsets verdeeld. Partitionering verbetert de efficiëntie van de gegevensprestaties door de werklast te verdelen en de parallelle verwerking te verbeteren. Het zorgt ook voor effectievere gegevenstoegang op basis van specifieke behoeften en vraagpatronen. U kunt gegevens verticaal of horizontaal partitioneren (ook wel sharding genoemd). Als u bijvoorbeeld Dataverse Elastic-tabellen gebruikt, moet bedenken wat de partitioneringssleutel zou moeten zijn.
Strategie | Definitie | Voorbeeld | Gebruiksgevallen |
---|---|---|---|
Verticale verdeling | Verdeel een tabel in kleinere tabellen door voor elke partitie specifieke kolommen of velden te selecteren. Elke partitie vertegenwoordigt een subset van de volledige gegevens. | Als u een tabel heeft met de kolommen A, B, C en D, kunt u één tabel maken met de kolommen A en B en een andere met de kolommen C en D. | - Een tabel bevat veel kolommen, maar query's openen niet alle kolommen tegelijk. - Sommige kolommen zijn groter dan andere en het scheiden ervan kan de I/O-prestaties verbeteren. - Verschillende gegevensdelen hebben verschillende toegangspatronen. |
Horizontale verdeling | Gegevens splitsen op basis van rijen of waardenbereiken (ook wel sharding genoemd). Elke partitie bevat een subset van rijen met vergelijkbare kenmerken. | Als u een tabel heeft met de rijen 1 tot en met 1000, kunt u één partitie maken met de rijen 1 tot en met 500 en een andere met de rijen 501 tot en met 1000. | - Een dataset is te groot voor één locatie of server. - Gegevens zijn toegankelijk op basis van specifieke bereiken of filters. - De workload moet over fysieke knooppunten of servers worden verdeeld voor betere prestaties. |
Overweeg de volgende stappen om uw gegevens te partitioneren:
Analyseer gegevens en query's. Analyseer gegevens en querypatronen om geschikte partitie- of shardingstrategieën te identificeren. Begrijp de aard van de gegevens, toegangspatronen en distributievereisten.
Bepaal een sleutel. Kies een partitie- of shardingsleutel om gegevens over partities of shards te distribueren. Selecteer de sleutel zorgvuldig op basis van gegevenskenmerken en queryvereisten.
Bepaal de logica. Bepaal een partitie- of shardinglogica op basis van de gekozen sleutel. Overweeg de gegevens in bereiken te verdelen, hash-algoritmen toe te passen of andere partitietechnieken te gebruiken.
Query's optimaliseren
Door query's te optimaliseren, worden query's verfijnd om het aantal gegevens dat in aanmerking komt en het aantal geretourneerde gegevens te beperken. Deze aanpassingen verhogen de efficiëntie en snelheid van het ophalen van gegevens. Als gevolg hiervan heeft de database een lichtere workload, werken resources effectiever en profiteren gebruikers van soepelere interacties.
Overweeg de volgende strategieën om databasequery's te optimaliseren:
Query's herschrijven. Beoordeel en analyseer complexe query's om mogelijkheden te identificeren om ze te herschrijven. Overweeg om de querylogica te herstructureren, overbodige bewerkingen te elimineren of de syntaxis van query's te vereenvoudigen.
Vermijd het N+1-queryprobleem. Minimaliseer het aantal roundtrips naar de database door gebruik te maken van joins en batches op te halen om gerelateerde gegevens efficiënt op te halen.
Wijzig de volgorde van joins. Evalueer en overweeg de volgorde van samenvoegingen opnieuw in te delen om het aantal rijen in elke samenvoegingsbewerking te minimaliseren. De volgorde waarin u tabellen samenvoegt, kan de prestaties van query's beïnvloeden.
Query's cachen. Sla de resultaten van vaak uitgevoerde query's op voor eenvoudig hergebruik. Querycaching elimineert de noodzaak om herhaaldelijk dezelfde query uit te voeren en vermindert de overhead voor queryverwerking.
Bewaak en stem af. Bewaak prestatiestatistieken voor query's, zoals runtime, resourcegebruik en querydoorvoer. Gebruik databaseprofileringstools en monitoringfunctionaliteiten om slecht presterende query's te identificeren. Gebruik die informatie om de queryprestaties te optimaliseren.
Gegevens archiveren en opschonen
Archiveren en opschonen zijn strategieën die de gegevensopslag stroomlijnen. Door te archiveren worden oudere, minder vaak gebruikte gegevens verplaatst naar meer kosteneffectieve opslag. Door gegevens op te schonen, worden overtollige gegevens permanent verwijderd. Beide methoden dragen bij aan de prestatie-efficiëntie door het datavolume te verminderen, de datatoegangssnelheid te verhogen en de back-up- en hersteltijden te verkorten.
- Vermindering van de hoeveelheid data: Minder data betekent snellere verwerkingstijden, waardoor er sneller op gebruikersverzoeken kan worden gereageerd.
- Snellere toegang tot gegevens: Een ingekorte gegevensset zorgt voor snellere query's en sneller ophalen van gegevens, waardoor de systeemresponsiviteit wordt geoptimaliseerd.
- Back-up- en hersteltijden verkorten: Kleinere datasets versnellen back-up- en herstelprocessen, minimaliseren de downtime en zorgen voor consistente prestaties.
Archivering en opschoning spelen een belangrijke rol bij het handhaven van maximale prestatie-efficiëntie in datagestuurde systemen.
Optimaliseer de opslagbelasting
Het optimaliseren van de opslagbelasting betekent het stroomlijnen van verzoeken aan het opslagsysteem. Het helpt onnodige verzoeken te elimineren, verbetert het ophalen van gegevens en voorkomt dat het opslagsysteem overbelast raakt. Het optimaliseren van de opslagbelasting zorgt ervoor dat het opslagsysteem blijft reageren op legitieme verzoeken en topprestaties blijft leveren. Implementeer strategieën om de verwerkingslast voor de gegevensopslag te verminderen. Overweeg de volgende strategieën om de belasting van de gegevensopslag te optimaliseren.
Caching gebruiken
Caching slaat veelgebruikte gegevens op in een snel toegankelijk opslaggebied, waardoor het ophalen van gegevens sneller gaat dan wanneer ze uit de hoofdbron worden gehaald. Deze techniek verbetert de gegevensprestaties door de toegangstijden te verkorten en herhaaldelijk ophalen van gegevens te voorkomen. Caching verbetert de leessnelheid en de responstijden van gebruikers, vooral voor vaak gebruikte gegevens. Deze methode is het meest effectief bij statische gegevens of gegevens die zelden veranderen.
Om een optimale caching-efficiëntie te garanderen, moet u rekening houden met factoren als vervalbeleid, verwijderingsstrategieën en beheer van de cachegrootte. Pas instellingen aan, zoals de time to live (TTL), voor optimale prestaties. Als u een cache wilt gebruiken om de opslagbelasting te optimaliseren, kunt u de volgende strategieën overwegen:
In-memory caching: Voer in-memory caching uit om vaak gebruikte gegevens in het geheugen op te slaan voor snel ophalen. U kunt deze techniek gebruiken voor toepassingsgegevens die duur zijn om te berekenen of op te halen uit een database. Caching in het geheugen is handig voor gegevens die u vaak leest, maar niet vaak veranderen. U kunt bijvoorbeeld variabelen in cloudstromen of verzamelingen in canvas-apps gebruiken om gegevens in de cache op te slaan.
Caching van databasequery's: Gebruik deze techniek om de resultaten van databasequery's te cachen, zodat u niet dezelfde query meerdere keren hoeft uit te voeren. Caching van databasequery's is handig voor complexe en tijdrovende databasequery's. Wanneer u de resultaten van een zoekopdracht in de cache opslaat, worden volgende aanvragen voor dezelfde zoekopdracht snel geretourneerd. Overweeg ook om waar mogelijk serverweergaven te gebruiken om gegevens vooraf te filteren om de gegevens te beperken tot die gegevens die relevant zijn voor uw query.
Caching van content delivery network: Gebruik deze techniek om webcontent te cachen op gedistribueerde netwerkservers om de latentie te verminderen en de contentlevering te verbeteren. Netwerkcaching voor inhoudslevering is effectief voor statische inhoud, zoals afbeeldingen, CSS bestanden en JavaScript-bestanden. Netwerken voor inhoudslevering slaan kopieën van inhoud op meerdere locaties over de hele wereld op, zodat gebruikers toegang hebben tot de inhoud vanaf een server die geografisch bij hen in de buurt is.
Optimaliseer gegevensupdates
Het optimaliseren van gegevensupdates omvat het evalueren van de updates van gegevens die worden uitgevoerd om er zeker van te zijn dat ze efficiënt zijn. Updates kunnen de prestaties sterker beïnvloeden dan andere bewerkingen, omdat ze onnodig werk kunnen triggeren en vergrendelingsconflicten kunnen veroorzaken.
Als u wilt evalueren hoe u gegevensupdates kunt optimaliseren, kunt u het volgende overwegen:
Gegevenswijzigingen. Optimaliseer automatisering door originele versies van de gegevens of filters te gebruiken om het werk te beperken wanneer er geen daadwerkelijke verandering heeft plaatsgevonden. Vermijd het activeren van automatisering voor ongewijzigde gegevens.
Automatisering. Evalueer wanneer en hoe updates worden geactiveerd op basis van gegevenswijzigingen, en optimaliseer triggers door een filter op te nemen. Om bijvoorbeeld de automatisering alleen te activeren wanneer een specifiek veld in de gegevensbron wordt gewijzigd. Evalueer updates die incrementeel meermaals automatiseringen activeren. Overweeg in plaats daarvan of u een aangepaste bewerking kunt maken om alle verwerkingen af te handelen. Als een bestelling bijvoorbeeld wordt verzonden en de verzenddatum en het trackingnummer afzonderlijk worden bijgewerkt, kunnen ze beide tegelijkertijd worden bijgewerkt in een aangepaste 'ShipOrder'-bewerking.
Doodlopende wegen. Evalueer langzame updatebewerkingen die problemen kunnen veroorzaken als gevolg van meerdere stromen waarbij dezelfde gegevens in verschillende volgordes worden bijgewerkt. Deze inefficiëntie kan leiden tot vergrendelconflicten of zelfs tot impasses, wat resulteert in onnodig herwerk. Werk de verschillende bronnen in dezelfde volgorde bij om conflicten te minimaliseren.
Bulkupdates. Als u bewerkingen op meerdere rijen van een tabel uitvoert, kunt u overwegen bulkbewerkingen te gebruiken.
Optimaliseer de gegevensbeweging en -verwerking
Het optimaliseren van de gegevensbeweging en -verwerking omvat het verbeteren van de efficiëntie en prestaties van bewerkingen met betrekking tot gegevensextractie, -transformatie, -laden en -verwerking. Houd rekening met de volgende belangrijke aspecten van het optimaliseren van gegevensverplaatsing en -verwerking:
Optimalisatie van ETL (Extract, Transform, Load): optimaliseer ETL-processen om de verwerkingstijd te minimaliseren. U kunt het extractieproces stroomlijnen, efficiënte transformatie-algoritmen implementeren en het laadproces optimaliseren. Wanneer u elke stap efficiënt maakt, optimaliseert u de algehele workflow.
Parallelle verwerking: Gebruik parallelle verwerkingstechnieken om de prestaties te verbeteren. Wanneer u gegevensverwerkingstaken over meerdere threads of knooppunten verdeelt, kunt u de werklast gelijktijdig verdelen en verwerken, wat resulteert in een snelle verwerking.
Batchverwerking: Groepeer soortgelijke taken om de overhead die ontstaat door herhaalde bewerkingen te verminderen. Verwerk meerdere taken in een batch om de totale verwerkingstijd te verkorten.
Ontwerp voor datanabijheid
Gegevensnabijheid verwijst naar de strategische plaatsing van gegevens dichter bij de gebruikers of services die er het vaakst toegang toe hebben. Het verkleinen van de fysieke of logische afstand tussen de gegevens en de gebruikers ervan zorgt voor snellere gegevenstoegang en een verbeterde responsiviteit. U kunt deze strategieën gebruiken om het ontwerp voor dichte nabijheid te optimaliseren:
Gegevenstoegangspatronen evalueren: Beoordeel de toegangspatronen van uw werklast en de vaak geraadpleegde gegevens. Deze analyse kan helpen bepalen waar de gegevens moeten worden geplaatst voor maximaal voordeel.
Kies oplossingen die dataverplaatsing ondersteunen: Overweeg oplossingen die dynamische dataverplaatsing bieden op basis van veranderende toegangspatronen, waardoor een optimale datapositionering wordt gegarandeerd.
Kies oplossingen die gegevenssynchronisatie ondersteunen: Als u een verspreide gebruikersbasis bedient, kiest u oplossingen die gegevenssynchronisatie tussen de verschillende regio's mogelijk maken. Zo zorgt u ervoor dat gegevensreplica's in de buurt van gebruikers beschikbaar zijn.
Afweging: Als de onderliggende gegevens regelmatig veranderen, implementeer dan een mechanisme voor cache-invalidatie om ervoor te zorgen dat de gecachte gegevens up-to-date blijven.
Power Platform-facilitering
Gegevensprestaties bewaken: Als u gegevensprestaties wilt bewaken, kunt u Azure Monitor gebruiken om infrastructuurstatistieken, logboeken en toepassingsgegevens te verzamelen en analyseren. ... U kunt Monitor integreren met andere services, zoals Application Insights. Application Insights biedt monitoring van applicatieprestaties en ondersteunt vele platforms.
Application Insights verzamelt gebruiks- en prestatiegegevens. U kunt Log Analytics gebruiken om die gegevens te correleren met configuratie- en prestatiegegevens in Azure-resources. De gegevensstroom van Application Insights voor Dataverse biedt momenteel prestatiegegevens met betrekking tot inkomende Dataverse-API-oproepen, uitvoeringsoproepen van Dataverse-plug-ins, en Dataverse-SDK-oproepen.
Optimaliseer querygegevenspatronen in canvas-apps: volgen de gedocumenteerde richtlijnen en suggesties. Zie Geoptimaliseerde querygegevenspatronen in Power Apps.
Optimaliseer de manier waarop u aanpast, uitbreidt of integreert met Dataverse: volgen de gedocumenteerde best practices en richtlijnen. Zie Best practices en richtlijnen bij het gebruik van Microsoft Dataverse.
Optimaliseer databasequery's en indexprestaties: gebruik de functie voor inzicht in queryprestaties van Azure SQL Database om query's, tabellen en databases te optimaliseren. U kunt deze functie ook gebruiken om prestatieproblemen met query's te identificeren en op te lossen.
Voor relationele databases volgt u de richtlijnen voor indexontwerp, SQL Server-indexrichtlijnen en Azure Cosmos DB-indexrichtlijnen. Gebruik SQL Database om automatische afstemming uit te voeren voor query's om de prestaties ervan te verbeteren.
Voor SQL-databases moet u de indexen regelmatig reorganiseren of opnieuw opbouwen. Identificeer trage query's en stem deze af om de prestaties te verbeteren. Veel database-engines bieden functies voor het afstemmen van query's. Raadpleeg voor meer informatie de best practices voor queryprestaties.
Azure Cosmos DB heeft een standaardbeleid voor indexering waarmee elke eigenschap van elk item wordt geïndexeerd en bereikindexen worden afgedwongen voor elke tekenreeks of elk getal. Dit beleid biedt u efficiënte queryprestaties en u hoeft de indexen niet vooraf te beheren.
Optimaliseer de opslagbelasting: Veel Azure-databaseservices ondersteunen leesreplica's. De beschikbaarheid en configuratie van leesreplica's varieert, afhankelijk van de Azure-databaseservice. Raadpleeg de officiële documentatie voor elke service om de details en opties te begrijpen.
Gerelateerde informatie
- Overzicht van het maken van performante Power Apps
- Selecteer een Azure gegevensopslag voor uw toepassing
- Pas een Power Automate flow trigger aan door voorwaarden toe te voegen
- Dataverse elastische tafels
Controlelijst voor prestatie-efficiëntie
Raadpleeg de volledige reeks aanbevelingen.