Aanbevelingen voor het optimaliseren van gegevensprestaties

Is van toepassing op deze aanbeveling voor de controlelijst voor prestatie-efficiëntie van Azure Well-Architected Framework:

PE:08 Gegevensprestaties optimaliseren. Optimaliseer gegevensarchieven, partities en indexen voor het beoogde en werkelijke gebruik in de workload.

In deze handleiding worden de aanbevelingen voor het optimaliseren van de gegevensprestaties beschreven. Het optimaliseren van gegevensprestaties gaat over het verfijnen van de efficiëntie waarmee de workload gegevens verwerkt en opslaat. Elke workloadbewerking, transactie of berekening is doorgaans afhankelijk van het snel en nauwkeurig ophalen, verwerken en opslaan van gegevens. Wanneer de gegevensprestaties zijn geoptimaliseerd, wordt de workload soepel uitgevoerd. Gecompromitteerde gegevensprestaties zorgen voor een domino-effect van slechte prestatie-efficiëntie. Het niet optimaliseren van de gegevensprestaties resulteert in reactievertragingen, verhoogde latentie en een beperking van de schaalbaarheid. Dit brengt de efficiëntie van de hele workload in gevaar.

Definities

Termijn Definitie
CAP-theorema Een framework dat wordt gebruikt om consistentie, beschikbaarheid en partitietolerantie te overwegen om de afwegingen in gegevensconsistentie te verklaren.
Database index herbouwen Een onderhoudsactiviteit waarmee een index wordt verwijderd en opnieuw wordt gemaakt.
Reorganisatie van database-indexen Een onderhoudsactiviteit waarmee de huidige database-index wordt geoptimaliseerd.
Gegevensarchief Een resource waarin gegevens worden opgeslagen, zoals een database, objectarchief of bestandsshare.
Consistentie Uiteindelijk Een gegevenssynchronisatiemodel dat tijdelijke inconsistentie in gegevensreplica's mogelijk maakt voordat ze uiteindelijk worden gesynchroniseerd.
Index Een databasestructuur die snelle toegang tot items biedt.
Online analytical processing (OLAP) Een technologie die grote zakelijke databases organiseert, complexe analyse ondersteunt en complexe analytische query's uitvoert zonder dat transactionele systemen negatief worden beïnvloed.
Online Transaction Processing (OLTP) Een technologie die zakelijke interacties registreert wanneer deze zich voordoen in de dagelijkse werkzaamheden van een organisatie.
Optimistische gelijktijdigheid Een methode voor het bijwerken van databases waarbij momentopnamen worden gebruikt om updates uit te voeren in plaats van traditionele vergrendelingsmechanismen, waardoor de prestaties en schaalbaarheid worden verbeterd.
Stelling van PACELC Een framework dat wordt gebruikt om partitietolerantie, beschikbaarheid, consistentie en latentie te overwegen om de afwegingen in gegevensconsistentie te verklaren.
Partitionering Het proces van het fysiek verdelen van gegevens in afzonderlijke gegevensarchieven.
Queryafstemming Een proces waarmee de snelheid van een databasequery wordt geoptimaliseerd.
Replica lezen Een livekopie van een primaire database waarmee u leesverkeer kunt offloaden vanuit een schrijfdatabase.

Belangrijke ontwerpstrategieën

Om het gegevensgebruik te optimaliseren, moet u ervoor zorgen dat gegevensarchieven, partities en indexen zijn geoptimaliseerd voor het beoogde gebruik en voor hun werkelijke gebruik in een workload. Geoptimaliseerd gegevensgebruik kan de queryprestaties verbeteren, het resourceverbruik verminderen en de algehele systeemefficiëntie verbeteren. Overweeg de volgende strategieën:

  • Profielgegevens. Krijg inzicht in uw gegevens en zorg ervoor dat uw gegevensmodel geschikt is voor uw workload. Houd rekening met factoren zoals gegevensnormalisatie, indexeringsstrategieën en partitioneringstechnieken. Voor het efficiënt ophalen van gegevens moet u ervoor zorgen dat u de juiste gegevenstypen selecteert, relaties tussen entiteiten definieert en een optimale indexeringsstrategie bepaalt.

  • Verfijn de configuratie van uw gegevensopslag. Configureer uw infrastructuur voor gegevensopslag om deze af te stemmen op uw workloadvereisten. Selecteer een geschikte opslagtechnologie, bijvoorbeeld relationele databases, NoSQL-databases en datawarehouses. Optimaliseer opslaginstellingen, zoals buffergrootte, cachingmechanismen en compressie.

  • Queryprestaties optimaliseren. Analyseer en optimaliseer query's die in de workload worden uitgevoerd. Gebruik technieken zoals queryoptimalisatie, indexering en caching. Als u knelpunten wilt identificeren, gebruikt u queryplannen en hulpprogramma's voor prestatiebewaking en brengt u vervolgens de benodigde verbeteringen aan.

  • Controleer en stem het systeem regelmatig af. Continu de prestaties van uw workload bewaken en de configuratie van de gegevensopslag en queryoptimalisaties herhalen. Op basis van best practices voor het afstemmen van prestaties analyseert u metrische gegevens van het systeem, identificeert u verbeterpunten en implementeert u wijzigingen.

Profielgegevens

Gegevensprofilering omvat het onderzoeken van de gegevens uit een bron en het verzamelen van informatie hierover. Het doel is om inzicht te hebben in de kwaliteit, structuur en kenmerken van workloadgegevens. Dit proces maakt het mogelijk om problemen te identificeren, zoals ontbrekende waarden, duplicaten, inconsistente notaties en andere afwijkingen. Voor effectieve gegevensprofilering kunt u de volgende strategieën overwegen:

  • Inzicht in de gegevensstructuur. Bekijk de structuur van uw gegevens, inclusief tabellen, kolommen en relaties. Bepaal de gegevenstypen, lengten en beperkingen die op elke kolom worden toegepast. Met de evaluatie van de gegevensstructuur krijgt u inzicht in 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 hebben in de totale grootte en groeipatronen. Bepaal het aantal records of documenten en de grootte van afzonderlijke tabellen of verzamelingen. Deze informatie helpt u bij het schatten van opslagvereisten en het identificeren van schaalbaarheidsproblemen.

  • Gegevensrelaties identificeren. Verken de relaties tussen gegevenselementen, zoals primaire en refererende sleutelrelaties. Begrijp hoe gegevens zijn verbonden, zodat u kunt bepalen hoe wijzigingen in één tabel of document van invloed kunnen zijn op gerelateerde gegevens.

  • De gegevenskwaliteit beoordelen. Evalueer de kwaliteit van uw gegevens door factoren zoals volledigheid, nauwkeurigheid, consistentie en uniekheid te onderzoeken. Identificeer gegevensafwijkingen, ontbrekende waarden of dubbele records die van invloed kunnen zijn op de gegevensintegriteit en queryprestaties. Met deze stap kunt u gebieden identificeren voor het opschonen en verbeteren van gegevens.

  • Gegevensdistributie vastleggen. Analyseer de verdeling van waarden binnen elke kolom om gegevenspatronen te bepalen. Identificeer frequente en zeldzame waarden, uitbijters en gegevensscheefheid. Als u de queryprestaties wilt optimaliseren, kiest u de juiste indexeringsstrategieën en queryoptimalisatietechnieken op basis van de distributie.

Gegevensprestaties bewaken

Bewaking van gegevensprestaties is de praktijk van het consistent bijhouden van de efficiëntie van gegevensarchieven, partities en indexen in realtime. Het omvat het verzamelen en analyseren van metrische prestatiegegevens die specifiek zijn voor gegevensbewerkingen, met behulp van hulpprogramma's die zijn afgestemd op systeemniveau, databasespecifieke of bewakingsoplossingen van derden. Met effectieve bewaking van gegevensprestaties kunt u proactief potentiële knelpunten identificeren en verhelpen, zodat gegevensgerelateerde processen en taken efficiënt zijn. Overweeg de volgende strategieën om de gegevensprestaties te bewaken:

  • Gegevensspecifieke metrische gegevens verzamelen. Verzamel belangrijke metrische gegevens die rechtstreeks betrekking hebben op gegevensprestaties. Deze metrische gegevens omvatten reactietijden voor query's, gegevensdoorvoer, schijf-I/O met betrekking tot gegevenstoegang en de laadtijden van specifieke gegevenspartities.

  • Gegevenswaarschuwingen instellen. Waarschuwingen instellen die specifiek zijn voor metrische gegevens. Gebruik vooraf gedefinieerde drempelwaarden of afwijkingen in deze metrische gegevens om waarschuwingen te activeren. Met waarschuwingen kunt u meldingen ontvangen wanneer de metrische prestatiegegevens acceptabele bereiken overschrijden of abnormaal gedrag vertonen. Als een databasequery bijvoorbeeld langer duurt dan verwacht of als de gegevensdoorvoer aanzienlijk afneemt, wordt er een waarschuwing geactiveerd. U kunt deze waarschuwingen instellen met behulp van gespecialiseerde bewakingshulpprogramma's of aangepaste scripts.

  • Prestatieproblemen met gegevens vaststellen. Controleer regelmatig de verzamelde metrische gegevens om mogelijke prestatieknelpunten of afname van gegevensbewerkingen vast te stellen. Visualisatiehulpprogramma's of dashboards kunnen van onschatbare waarde zijn in dit proces en helpen trends, knelpunten en uitschieters in de prestaties van gegevens te benadrukken. Zodra deze problemen zijn geïdentificeerd, gaat u dieper in op de hoofdoorzaken van deze problemen en voert u de juiste herstelstappen uit.

Partitiegegevens

Partitioneren omvat het opsplitsen van grote gegevenssets of workloads met grote volumes in kleinere, beheerbare subsets. Partitionering verbetert de efficiëntie van de gegevensprestaties door de workload te distribueren en de parallelle verwerking te verbeteren. Het zorgt ook voor effectievere gegevenstoegang op basis van specifieke behoeften en querypatronen. U kunt gegevens verticaal of horizontaal partitioneren (ook wel sharding genoemd).

Strategie Definitie Voorbeeld Gebruiksvoorbeelden
Verticale partitionering Verdeel een tabel in kleinere tabellen door specifieke kolommen of velden voor elke partitie te selecteren. Elke partitie vertegenwoordigt een subset van de volledige gegevens. Als u een tabel met de kolommen A, B, C en D hebt, kunt u een tabel maken met de kolommen A en B en een andere tabel met de kolommen C en D. - Een tabel bevat veel kolommen, maar query's hebben geen toegang tot alle kolommen samen.
- Sommige kolommen zijn groter dan andere en het scheiden ervan kan de I/O-prestaties verbeteren.
- Verschillende gegevensonderdelen hebben verschillende toegangspatronen.
Horizontale partitionering Gegevens splitsen op basis van rijen of waardenbereiken (ook wel bekend als sharding). Elke partitie bevat een subset van rijen met vergelijkbare kenmerken. Als u een tabel met rijen 1 tot en met 1000 hebt, kunt u een partitie maken met de rijen 1 tot en met 500 en een andere met de rijen 501 tot en met 1000. - Een gegevensset is te groot voor één locatie of server.
- Gegevens worden geopend op basis van specifieke bereiken of filters.
- De workload moet worden verdeeld over fysieke knooppunten of servers voor verbeterde prestaties.

Overweeg de volgende stappen om uw gegevens te partitioneren:

  • Gegevens en query's analyseren. Analyseer gegevens en querypatronen om geschikte partitionerings- of shardingstrategieën te identificeren. Inzicht in de aard van de gegevens, toegangspatronen en distributievereisten.

  • Een sleutel bepalen. Kies een partitionerings- of shardingsleutel om gegevens over partities of shards te verdelen. Selecteer de sleutel zorgvuldig op basis van gegevenskenmerken en queryvereisten.

  • Logica bepalen. Bepaal een partitionerings- of shardinglogica op basis van de gekozen sleutel. Overweeg de gegevens op te delen in bereiken, hash-algoritmen toe te passen of andere partitioneringstechnieken te gebruiken.

  • Configureer de infrastructuur. Configureer het databasesysteem ter ondersteuning van partitionering of sharding. Overweeg om de benodigde infrastructuur te maken, de partities of shards te definiëren en de gegevensdistributie te configureren.

Zie Richtlijnen voor gegevenspartitionering voor meer informatie.

Databasequery's optimaliseren

Het optimaliseren van databasequery's verfijnt query's met behulp van technieken zoals indexhints en caching. Deze aanpassingen verhogen de efficiëntie en snelheid van het ophalen van gegevens. Als gevolg hiervan heeft de database een lichtere werkbelasting, werken resources effectiever en kunnen gebruikers soepeler werken. Overweeg de volgende strategieën om databasequery's te optimaliseren:

  • Query's herschrijven. Bekijk en analyseer complexe query's om mogelijkheden te identificeren om ze te herschrijven. Overweeg om querylogica te herstructureren, overbodige bewerkingen te elimineren of de querysyntaxis te vereenvoudigen.

  • Vermijd het N+1-queryprobleem. Minimaliseer het aantal retours naar de database door joins en batchgewijs ophalen te gebruiken om gerelateerde gegevens efficiënt op te halen.

  • De volgorde van joins wijzigen. Evalueer het queryplan en overweeg de samenvoegvolgorde opnieuw te rangschikken om het aantal rijen in elke joinbewerking te minimaliseren. De volgorde waarin u tabellen samenvoegt, kan van invloed zijn op de queryprestaties.

  • Indexhints gebruiken. Gebruik indexhints zodat een database-engine het gebruik van indexen kan opgeven wanneer een query wordt uitgevoerd. Indexhints begeleiden het optimalisatieprogramma om de meest geschikte indexen te selecteren.

  • Cachequery's. Sla de resultaten van vaak uitgevoerde query's op in het geheugen. Query's in de cache opslaan elimineert de noodzaak om herhaaldelijk dezelfde query uit te voeren en vermindert de overhead voor queryverwerking.

  • Vergrendeling optimaliseren. Vermijd onnodige of beperkende vergrendelingshints in query's. Efficiënte vergrendelingsstrategieën kunnen de queryprestaties en gelijktijdigheid verbeteren. Pas geoptimaliseerde vergrendelingsmechanismen toe die het databasesysteem biedt. Analyseer en pas isolatieniveaus aan om gegevensconsistentie en queryprestaties in balans te stellen.

  • Bewaken en afstemmen. Bewaak metrische gegevens over queryprestaties, zoals runtime, resourcegebruik en querydoorvoer. Gebruik hulpprogramma's voor databaseprofilering en bewakingsfuncties om slecht presterende query's te identificeren. Evalueer en verfijn queryplannen op basis van verzamelde prestatiegegevens. Analyseer queryplannen en wachtstatistieken om knelpunten te identificeren. Gebruik deze informatie om de queryprestaties te optimaliseren.

Indexprestaties optimaliseren

Indexen verbeteren de snelheid van het ophalen van gegevens doordat databases snel gegevens kunnen vinden met behulp van specifieke kolommen of velden. Wanneer u deze indexen optimaliseert, worden sorteer- en joinbewerkingen efficiënter, wat leidt tot snellere query's. Goed geoptimaliseerde indexen verminderen de schijf-I/O-bewerkingen die nodig zijn voor query's. Het verwijderen van overbodige of redundante indexen maakt ook waardevolle opslagruimte vrij. Overweeg de volgende strategieën om de indexprestaties te optimaliseren:

  • Querypatronen analyseren. Inzicht in de querypatronen die worden uitgevoerd op uw database. Identificeer de query's die regelmatig worden uitgevoerd en die de prestaties kunnen verslechteren. Analyseer querypatronen om te bepalen welke indexen nuttig zijn voor het optimaliseren van de prestaties.

  • Bestaande indexen evalueren. Controleer de bestaande indexen in uw database. Evalueer het gebruik, de prestatie-effecten en de relevantie voor de querypatronen. Identificeer redundante of ongebruikte indexen die u kunt verwijderen om de schrijfprestaties te verbeteren en de opslagoverhead te verminderen.

  • Kolommen identificeren voor indexering. Kolommen identificeren die vaak worden gebruikt in de component where, join en order by van uw query's. Deze kolommen zijn potentiële kandidaten voor indexering, omdat ze snel gegevens kunnen ophalen.

  • Kies een geschikt indextype. Selecteer een geschikt indextype op basis van uw databasesysteem. Veelvoorkomende opties zijn b-tree-indexen voor gelijkheids- en bereikquery's, hash-indexen voor exacte overeenkomstquery's en volledige-tekstindexen voor tekstzoekbewerkingen. Kies een indextype dat het beste overeenkomt met uw queryvereisten.

  • Overweeg de volgorde van de indexkolommen. Wanneer u samengestelde indexen of indexen met meerdere kolommen maakt, moet u rekening houden met de volgorde van de kolommen. Plaats de kolommen die het meest worden gebruikt in query's aan het begin van de index. De kolomvolgorde zorgt ervoor dat uw workload effectief gebruikmaakt van indexen voor een breed scala aan query's.

  • Indexgrootte van saldo. Vermijd het maken van indexen voor kolommen met een lage kardinaliteit of kolommen met een laag aantal afzonderlijke waarden. Dergelijke indexen kunnen inefficiënt zijn en de grootte van uw database vergroten. Indexeer in plaats daarvan kolommen met een hoge selectiviteit.

  • Indexgebruik behouden. Bewaak continu het gebruik en de prestaties van uw indexen. Zoek naar mogelijkheden om nieuwe indexen te maken of bestaande indexen te wijzigen op basis van wijzigingen in querypatronen of prestatievereisten. Indexen verwijderen of bijwerken die niet langer nuttig zijn. Indexen hebben onderhoudsoverhead. Als gegevens worden gewijzigd, kunnen indexen fragmenteren en de prestaties beïnvloeden. Voer regelmatig onderhoudstaken voor indexen uit, zoals het herbouwen of opnieuw organiseren van indexen, om optimale prestaties te garanderen.

  • Testen en valideren. Voordat u indexen in een productieomgeving wijzigt, moet u grondig testen en valideren. Meet het prestatie-effect van indexrevisies met behulp van representatieve workloads. Controleer de verbeteringen ten opzichte van vooraf gedefinieerde benchmarks.

Afweging: B-tree-indexen hebben mogelijk een hoge opslagoverhead en query's met exacte overeenkomsten kunnen traag zijn. Hash-indexen zijn niet geschikt voor bereikquery's of vergelijkingsoperators. Indexen in volledige tekst kunnen hoge opslagvereisten hebben en niet-tekstuele gegevensquery's kunnen traag zijn.

Gegevenscompressie overwegen

Gegevenscompressie is het proces van het verkleinen van de grootte van gegevens om de opslagruimte te optimaliseren en de efficiëntie van de workloadprestaties te verbeteren. Gecomprimeerde gegevens vereisen minder opslagruimte en minder bandbreedte voor het verzenden, wat resulteert in een snelle gegevensoverdracht. U comprimeert gegevens om uw opslagvoetafdruk te verminderen en de toegangstijden voor gegevens te verbeteren. Wanneer u gegevens comprimeert, vermindert dit de vereisten voor I/O-bewerkingen en netwerkbandbreedte.

Lossless-compressie en lossy-compressie zijn gegevenscompressiealgoritmen. Compressiealgoritmen zonder verlies verminderen de grootte van gegevens zonder dat er gegevens verloren gaan. Lossy-compressiealgoritmen bereiken een hoge compressieverhouding door minder belangrijke of redundante informatie te verwijderen.

Compromis: als u gegevens wilt comprimeren en decomprimeren, hebt u rekenresources nodig, zoals CPU en geheugen. Hoe meer gegevens u comprimeert, hoe meer resources u nodig hebt.

Gegevens archiveren en opschonen

Archiveren en opschonen zijn strategieën waarmee gegevensopslag wordt gestroomlijnd. Bij archivering worden oudere, minder vaak gebruikte gegevens verplaatst naar een kosteneffectievere opslag. Als u gegevens opschonen, worden redundante gegevens permanent verwijderd. Ze dragen bij aan de efficiëntie van de prestaties door het gegevensvolume te verminderen, de snelheid van gegevenstoegang te verhogen en de back-up- en hersteltijden te verkorten:

  • Minder gegevensvolume: minder gegevens betekent snellere verwerkingstijden, waardoor snelle reacties op aanvragen van gebruikers worden gegarandeerd.

  • Snelheid van gegevenstoegang verhogen: een ingekorte gegevensset maakt snellere query's en het ophalen van gegevens mogelijk, waardoor de reactiesnelheid van het systeem wordt geoptimaliseerd.

  • Kortere back-up- en hersteltijden: kleinere gegevenssets versnellen back-up- en herstelprocessen, waardoor downtime wordt geminimaliseerd en consistente prestaties worden gegarandeerd.

Archivering en opschoning zijn essentieel voor het handhaven van piekprestaties in gegevensgestuurde systemen.

Opslagbelasting optimaliseren

Het optimaliseren van de opslagbelasting betekent het stroomlijnen van aanvragen naar het opslagsysteem. Het helpt onnodige aanvragen te elimineren. Het verbetert ook het ophalen van gegevens en voorkomt overweldigende opslag. Het optimaliseren van de opslagbelasting zorgt ervoor dat het opslagsysteem reageert op legitieme aanvragen en piekprestaties behoudt. Implementeer strategieën om de verwerkingsbelasting voor het gegevensarchief te verminderen. Overweeg de volgende strategieën om de belasting van gegevensarchieven te optimaliseren:

Caching gebruiken

Met caching worden veelgebruikte gegevens opgeslagen in een opslaggebied met snelle toegang, waardoor gegevens sneller worden opgehaald dan wanneer ze uit de hoofdbron worden opgehaald. Deze techniek verbetert de gegevensprestaties door de toegangstijden te beperken en terugkerende gegevensophaling te voorkomen. Caching verbetert de leessnelheden en reactietijden van de gebruiker, met name voor gegevens die vaak worden gebruikt. Deze methode is het meest effectief voor statische gegevens of gegevens die zelden worden gewijzigd.

Houd rekening met factoren als verloopbeleid, verwijderingsstrategieën en het beheren van de cachegrootte om optimale cache-efficiëntie te garanderen. Pas instellingen aan, zoals de TTL (Time to Live), voor optimale prestaties. Als u een cache wilt gebruiken om de opslagbelasting te optimaliseren, kunt u de volgende strategieën overwegen:

  • Cache in het geheugen: Cache in het geheugen uitvoeren om veelgebruikte gegevens op te slaan in het geheugen voor snel ophalen. U kunt deze techniek gebruiken voor toepassingsgegevens die duur zijn om te berekenen of op te halen uit een database. In-memory caching is handig voor gegevens die u vaak leest, maar die niet regelmatig worden gewijzigd.

  • Cacheopslag van databasequery's: gebruik deze techniek om de resultaten van databasequery's in de cache op te cachen om te voorkomen dat dezelfde query meerdere keren wordt uitgevoerd. Databasequery's in de cache opslaan is handig voor complexe en tijdrovende databasequery's. Wanneer u de resultaten van een query in de cache opslaat, worden volgende aanvragen voor dezelfde query snel geretourneerd.

  • Netwerkcaching van inhoudslevering: gebruik deze techniek om webinhoud op gedistribueerde netwerkservers in de cache te plaatsen om de latentie te verminderen en de levering van inhoud te verbeteren. Caching van het netwerk voor inhoudslevering is effectief voor statische inhoud, zoals afbeeldingen, CSS-bestanden en JavaScript-bestanden. Netwerken voor contentlevering slaan kopieën van inhoud op op meerdere locaties over de hele wereld, zodat gebruikers toegang hebben tot de inhoud vanaf een server die geografisch dicht bij hen in de buurt is.

Leesreplica's gebruiken

Veel databases ondersteunen meerdere leesreplica's. Verdeelt leesquery's over replica's om de vraag naar de schrijfdatabase te minimaliseren. Elke leesreplica kan een subset van verkeer leveren, waardoor de prestaties kunnen worden verbeterd.

Wanneer u een workload hebt met meerdere gegevensreplica's die u verwacht gesynchroniseerd te houden, is het handig om dit gedistribueerde systeem te modelleren met behulp van de PACELC-stelling. De PACELC-stelling helpt u om latentie en afwegingskeuzen in de niet-gepartitioneerde status van het systeem te begrijpen. Gebruik deze informatie om u te helpen bij het kiezen van een database-engine en strategie voor gegevenssynchronisatie die het systeem het beste in een gepartitioneerde en niet-gepartitioneerde status aanspreekt. Zie CQRS-patroon (Command and Query Responsibility Segregation) voor meer informatie.

Gegevensconsistentie optimaliseren

In een gedistribueerde workload, waarbij gegevens zich op meerdere knooppunten of locaties bevinden, bepaalt het consistentieniveau dat u selecteert hoe snel wijzigingen op de ene locatie worden weergegeven in andere locaties. Als u voor een strengere consistentie wilt kiezen, verbruikt u meer rekenresources en dit kan een negatieve invloed hebben op de efficiëntie van de prestaties. Aan de andere kant zorgt een minder strikt consistentieniveau, zoals uiteindelijke consistentie, voor tijdelijke inconsistenties tussen knooppunten, maar kan de efficiëntie van de prestaties verbeteren.

Uiteindelijke consistentie zorgt voor een balans tussen gegevensnauwkeurigheid en workloadprestaties. Wijzigingen verspreiden zich geleidelijk in plaats van direct, waardoor de reactiesnelheid van de workload en de snelheid van de gegevensverwerking worden gestimuleerd. Hoewel hierdoor inconsistenties van korte duur worden geïntroduceerd, levert de workload uiteindelijk consistente gegevens op alle knooppunten. Het kiezen van uiteindelijke consistentie kan de prestaties van een workload verhogen en de beschikbaarheid en schaalbaarheid verder verbeteren.

Gegevensupdates optimaliseren

U kunt optimistische gelijktijdigheid gebruiken om gelijktijdige updates voor dezelfde gegevens te verwerken. In plaats van gegevens te vergrendelen en andere updates te voorkomen, zorgt optimistische gelijktijdigheid ervoor dat meerdere gebruikers of processen gelijktijdig werken en wordt ervan uitgegaan dat conflicten zeldzaam zijn.

Bij optimistische gelijktijdigheid bevat elke updatebewerking een versie of tijdstempel die de status van de gegevens op het moment van de update aangeeft. Wanneer een conflicterende update wordt gedetecteerd, lost het systeem het conflict op door de update te weigeren of de wijzigingen samen te voegen.

Optimistische gelijktijdigheid minimaliseert conflicten en maakt gelijktijdige updates mogelijk zonder onnodige vergrendeling. Het verkort de wachttijd voor resources en biedt een hoge doorvoer.

Gegevensverplaatsing en -verwerking optimaliseren

Het optimaliseren van de verplaatsing en verwerking van gegevens omvat het verbeteren van de efficiëntie en prestaties van bewerkingen met betrekking tot het extraheren, transformeren, laden en verwerken van gegevens. Houd rekening met de volgende belangrijke aspecten van het optimaliseren van gegevensverplaatsing en -verwerking:

  • Etl-optimalisatie (Extract, Transform, and Load): optimaliseer ETL-processen om de verwerkingstijd te minimaliseren. U kunt het extractieproces stroomlijnen, efficiënte transformatiealgoritmen implementeren en het laadproces optimaliseren. Wanneer u elke stap efficiënt maakt, kunt u de algehele werkstroom optimaliseren.

  • Parallelle verwerking: gebruik parallelle verwerkingstechnieken om de prestaties te verbeteren. Wanneer u gegevensverwerkingstaken over meerdere threads of knooppunten distribueert, kunt u de workload gelijktijdig verdelen en verwerken, wat resulteert in een snelle verwerking.

  • Batchverwerking: groepeer vergelijkbare taken om overhead te verminderen die wordt veroorzaakt door herhaalde bewerkingen. Meerdere taken in een batch verwerken om de totale verwerkingstijd te verkorten.

Opslagontwerp optimaliseren

Het optimaliseren van het opslagontwerp omvat het maken van een nauwkeurige architectuur voor gegevensopslag en het selecteren van de juiste opslagtechnologieën. Een gestroomlijnd opslagontwerp verbetert de toegang tot gegevens, het ophalen en bewerken van gegevens. Door strategisch opslagontwerp bereikt een workload betere reactietijden en algemene functionaliteit.

Ontwerpen voor gegevensnabijheid

Gegevensnabijheid verwijst naar de strategische plaatsing van gegevens dichter bij de gebruikers of services die er het vaakst toegang toe hebben. Door de fysieke of logische afstand tussen gegevens en de gebruikers te verkleinen, zorgt de nabijheid van gegevens voor snellere gegevenstoegang en verbeterde reactiesnelheid. Als u het ontwerp wilt optimaliseren voor nabijheid, kunt u de volgende strategieën overwegen:

  • Gegevenstoegangspatronen evalueren: evalueer de toegangspatronen en veelgebruikte gegevens van uw workload. Met deze analyse kunt u bepalen waar gegevens moeten worden opgeslagen voor het maximale voordeel.

  • Oplossingen kiezen die ondersteuning bieden voor het verplaatsen van gegevens: overweeg oplossingen die dynamische gegevensverplaatsing bieden op basis van veranderende toegangspatronen, zodat optimale gegevensposities worden gegarandeerd.

  • Oplossingen kiezen die ondersteuning bieden voor gegevenssynchronisatie: als u gebruikmaakt van een gedistribueerde gebruikersgroep, kiest u voor oplossingen die gegevenssynchronisatie tussen verschillende regio's vergemakkelijken, zodat gegevensreplica's dicht bij gebruikers beschikbaar zijn.

Afweging: als onderliggende gegevens regelmatig worden gewijzigd, implementeert u een mechanisme voor het ongeldig maken van de cache om ervoor te zorgen dat de gegevens in de cache up-to-date blijven.

Polyglot-persistentie gebruiken

Polyglot-persistentie is de praktijk van het gebruik van meerdere technologieën voor gegevensopslag om verschillende typen gegevens in een toepassing of systeem op te slaan en te beheren. Verschillende typen databases of opslagoplossingen voldoen aan verschillende gegevensvereisten.

Polyglot-persistentie maakt gebruik van de voordelen van elke technologie voor gegevensopslag om optimale prestaties en schaalbaarheid voor elk type gegevens te garanderen. U kunt bijvoorbeeld een relationele database gebruiken om gestructureerde, transactionele gegevens op te slaan. En u kunt een NoSQL-database gebruiken om ongestructureerde of semi-gestructureerde gegevens op te slaan.

Ontwerp een schema voor elke technologie voor gegevensopslag op basis van de vereisten van de gegevens. Voor relationele databases kunt u genormaliseerde tabellen met de juiste relaties maken. Voor NoSQL-databases kunt u documentstructuren of sleutel-waardeparen definiëren. Ontwikkel de benodigde onderdelen voor interactie met elke technologie voor gegevensopslag, zoals API's, gegevenstoegangslagen of pijplijnen voor gegevensintegratie. Zorg ervoor dat de toepassing gegevens kan lezen en schrijven naar de juiste gegevensarchieven.

Afweging: een gegevensstructuur met een lage normalisatie kan de prestaties verbeteren, maar complexe aspecten veroorzaken.

Afzonderlijke OLTP- en OLAP-systemen

Als u OLTP - en OLAP-systemen wilt scheiden, ontwerpt en implementeert u afzonderlijke systemen voor transactionele verwerking en analytische verwerkingstaken. Met deze scheiding kunt u elk systeem optimaliseren voor de specifieke workload en kenmerken.

OLTP-systemen worden gebruikt voor realtime transactionele verwerking. Ze handelen op efficiënte en betrouwbare wijze afzonderlijke transacties af. OLTP-systemen worden doorgaans gebruikt voor het uitvoeren van dagelijkse operationele taken, zoals online orderverwerking, voorraadbeheer en klantgegevensbeheer. OLTP-systemen geven prioriteit aan reactiesnelheid, consistentie en gelijktijdigheid.

OLAP-systemen worden gebruikt voor complexe analytische verwerking en rapportage. Ze verwerken grote hoeveelheden gegevens en voeren intensieve berekeningen en aggregaties uit. OLAP-systemen worden gebruikt voor taken zoals business intelligence, gegevensanalyse en ondersteuning voor beslissingen. OLAP-systemen geven prioriteit aan queryprestaties, gegevensaggregatie en multidimensionale analyse.

Wanneer u OLTP- en OLAP-systemen scheidt, kunt u de juiste resources toewijzen en elk systeem optimaliseren voor de specifieke workload. Met scheiding kunt u verschillende technieken voor gegevensmodellering toepassen op elk systeem. OLTP-systemen maken doorgaans gebruik van genormaliseerde schema's voor efficiënte transactionele verwerking. OLAP-systemen kunnen gebruikmaken van gedenormaliseerde schema's of datawarehousingtechnieken om queryprestaties te optimaliseren.

Azure-facilitering

Profileringsgegevens: Azure biedt hulpprogramma's en services die u kunt gebruiken om gegevens te profileren, zoals Azure Data Catalog, Azure Purview en Azure Synapse Analytics. Met deze hulpprogramma's kunt u gegevens uit verschillende bronnen extraheren, transformeren en laden, kwaliteitscontroles voor gegevens uitvoeren en inzicht krijgen in de gegevens.

Gegevensprestaties bewaken: als u de gegevensprestaties wilt bewaken, kunt u Azure Monitor gebruiken om metrische gegevens, logboeken en toepassingsgegevens van de infrastructuur te verzamelen en te analyseren. U kunt Monitor integreren met andere services, zoals Application Insights. Application Insights biedt bewaking van toepassingsprestaties en ondersteunt veel platforms.

Application Insights verzamelt gebruiks- en prestatiegegevens. U kunt Log Analytics gebruiken om die gegevens te correleren met configuratie- en prestatiegegevens in Azure-resources.

U kunt de inzichtenfunctie van Azure SQL en Azure Cosmos DB gebruiken om uw database te bewaken. Met deze functie kunt u problemen met databaseprestaties vaststellen en afstemmen.

Partitionering van gegevens: Azure biedt verschillende partitioneringsstrategieën voor verschillende gegevensarchieven. Elk gegevensarchief kan verschillende overwegingen en configuratieopties hebben voor gegevenspartitionering. Zie Strategieën voor gegevenspartitionering voor meer informatie.

Databasequery's en indexprestaties optimaliseren: gebruik de functie Inzicht in queryprestaties van Azure SQL Database om query's, tabellen en databases te optimaliseren. U kunt deze functie gebruiken om prestatieproblemen met query's te identificeren en op te lossen.

Voor relationele databases moet u de richtlijnen voor het ontwerpen van indexen, SQL Server indexrichtlijnen en Azure Cosmos DB-indexrichtlijnen volgen. Gebruik SQL Database om query's automatisch af te stemmen om de prestaties te verbeteren.

In SQL-databases moet u indexen regelmatig opnieuw ordenen of herbouwen. Identificeer trage query's en stem deze af om de prestaties te verbeteren. Veel database-engines hebben functies voor het afstemmen van query's. Zie Best practices voor queryprestaties voor meer informatie.

Azure Cosmos DB heeft een standaardindexeringsbeleid dat elke eigenschap van elk item indexeert en bereikindexen afdwingt voor elke tekenreeks of getal. Dit beleid biedt u efficiënte queryprestaties en u hoeft indexen niet vooraf te beheren.

Opslagbelasting optimaliseren: veel Azure-databaseservices ondersteunen leesreplica's. De beschikbaarheid en configuratie van leesreplica's variëren, afhankelijk van de Azure-databaseservice. Raadpleeg de officiële documentatie voor elke service voor meer informatie over de details en opties.

Opslagontwerp optimaliseren: Azure biedt veel verschillende gegevensarchieven die voldoen aan uw workloadbehoeften. Krijg inzicht in typen gegevensarchieven en selecteer een Azure-gegevensarchief voor uw toepassing.

Controlelijst voor efficiëntie van prestaties

Raadpleeg de volledige set aanbevelingen.