DTU-benchmark
Van toepassing op: Azure SQL Database
Een database transaction unit (DTU) is een maateenheid die een gemengde meting van CPU, geheugen, leesbewerkingen en schrijfbewerkingen vertegenwoordigt. Fysieke kenmerken (CPU, geheugen, IO) die aan elke DTU-meting zijn gekoppeld, worden gekalibreerd met behulp van een benchmark die de werkelijke databaseworkload simuleert. Dit artikel bevat een overzicht van de DTU-benchmark en deelt informatie over het schema, gebruikte transactietypen, workloadmix, gebruikers en pacing, schaalregels en metrische gegevens die zijn gekoppeld aan de benchmark.
Zie het overzicht van het aankoopmodel op basis van DTU voor algemene informatie over het aankoopmodel op basis van DTU.
Benchmark-samenvatting
De DTU-benchmark meet de prestaties van een combinatie van basisdatabasebewerkingen die het vaakst voorkomen in OLTP-workloads (Online Transaction Processing). Hoewel de benchmark is ontworpen met cloud-computing, zijn het databaseschema, de gegevenspopulatie en transacties ontworpen om breed te zijn afgestemd op de basiselementen die het meest worden gebruikt in OLTP-workloads.
Benchmarkresultaten correleren met de prestaties van echte databases
Het is belangrijk om te begrijpen dat alle benchmarks representatief en alleen indicatief zijn. De transactietarieven die met de benchmarktoepassing worden bereikt, zijn niet hetzelfde als de transacties die kunnen worden bereikt met andere toepassingen. De benchmark bestaat uit een verzameling verschillende transactietypen die worden uitgevoerd op basis van een schema met een reeks tabellen en gegevenstypen. Hoewel de benchmark dezelfde basisbewerkingen uitvoert die gebruikelijk zijn voor alle OLTP-workloads, vertegenwoordigt deze geen specifieke klasse van database of toepassing. Het doel van de benchmark is om een redelijke handleiding te bieden voor de relatieve prestaties van een database die kan worden verwacht bij het omhoog of omlaag schalen tussen rekengrootten.
In werkelijkheid zijn databases van verschillende grootten en complexiteit, ondervinden verschillende combinaties van workloads en reageren ze op verschillende manieren. Een IO-intensieve toepassing kan bijvoorbeeld eerder IO-drempelwaarden bereiken, of een CPU-intensieve toepassing kan eerder CPU-limieten bereiken. Er is geen garantie dat een bepaalde database op dezelfde manier wordt geschaald als de benchmark onder toenemende belasting.
De benchmark en de bijbehorende methodologie worden in dit artikel uitvoeriger beschreven.
Schema
Het schema is ontworpen om voldoende verscheidenheid en complexiteit te hebben om een breed scala aan bewerkingen te ondersteunen. De benchmark wordt uitgevoerd op basis van een database die bestaat uit zes tabellen. De tabellen worden onderverdeeld in drie categorieën: vaste grootte, schaalaanpassing en groei. Er zijn twee tabellen met een vaste grootte; drie schaaltabellen; en één groeiende tafel. Tabellen met een vaste grootte hebben een constant aantal rijen. Het schalen van tabellen heeft een kardinaliteit die evenredig is met de prestaties van de database, maar niet verandert tijdens de benchmark. De groeiende tabel heeft de grootte van een schaaltabel bij de eerste belasting, maar vervolgens verandert de kardinaliteit in de loop van het uitvoeren van de benchmark wanneer rijen worden ingevoegd en verwijderd.
Het schema bevat een combinatie van gegevenstypen, waaronder geheel getal, numeriek, teken en datum/tijd. Het schema bevat primaire en secundaire sleutels, maar geen referentiële sleutels: er zijn geen beperkingen voor referentiële integriteit tussen tabellen.
Een programma voor het genereren van gegevens genereert de gegevens voor de eerste database. Gehele getallen en numerieke gegevens worden gegenereerd met verschillende strategieën. In sommige gevallen worden waarden willekeurig verdeeld over een bereik. In andere gevallen wordt een set waarden willekeurig permuteerd om ervoor te zorgen dat een specifieke verdeling wordt gehandhaafd. Tekstvelden worden gegenereerd op basis van een gewogen lijst met woorden om realistische gegevens te produceren.
De grootte van de database is gebaseerd op een schaalfactor. De schaalfactor (afgekort als SF) bepaalt de kardinaliteit van de schaal- en groeitabellen. Zoals hieronder beschreven in de sectie Gebruikers en Pacing, de grootte van de database, het aantal gebruikers en de maximale prestaties, worden allemaal geschaald in verhouding tot elkaar.
Transacties
De workload bestaat uit negen transactietypen, zoals wordt weergegeven in de onderstaande tabel. Elke transactie is ontworpen om een bepaalde set systeemkenmerken in de database-engine en systeemhardware te markeren, met een hoog contrast van de andere transacties. Deze aanpak maakt het eenvoudiger om de impact van verschillende onderdelen op de algehele prestaties te beoordelen. De transactie 'Leesintensief' produceert bijvoorbeeld een aanzienlijk aantal leesbewerkingen van schijf.
Transactietype | Omschrijving |
---|---|
Lite lezen | SELECTEER; in-memory; alleen-lezen |
Normaal lezen | SELECTEER; voornamelijk in het geheugen; alleen-lezen |
Leesintensief | SELECTEER; meestal niet in het geheugen; alleen-lezen |
Lite bijwerken | UPDATE; in-memory; lezen/schrijven |
Zwaar bijwerken | UPDATE; meestal niet in het geheugen; lezen/schrijven |
Lite invoegen | INVOEGEN; in-memory; lezen/schrijven |
Zwaar invoegen | INVOEGEN; meestal niet in het geheugen; lezen/schrijven |
Verwijderen | VERWIJDEREN; mix van in-memory en niet in-memory; lezen/schrijven |
CPU-intensief | SELECTEER; in-memory; relatief zware CPU-belasting; alleen-lezen |
Workloadmix
Transacties worden willekeurig geselecteerd uit een gewogen verdeling met de volgende algemene mix. De algehele mix heeft een lees-/schrijfverhouding van ongeveer 2:1.
Transactietype | % van mix |
---|---|
Lite lezen | 35 |
Normaal lezen | 20 |
Leesintensief | 5 |
Lite bijwerken | 20 |
Zwaar bijwerken | 3 |
Lite invoegen | 3 |
Zwaar invoegen | 2 |
Verwijderen | 2 |
CPU-intensief | 10 |
Gebruikers en pacing
De benchmarkworkload wordt gebaseerd op een hulpprogramma waarmee transacties worden verzonden over een set verbindingen om het gedrag van een aantal gelijktijdige gebruikers te simuleren. Hoewel alle verbindingen en transacties worden gegenereerd, verwijzen we voor het gemak naar deze verbindingen als gebruikers. Hoewel elke gebruiker onafhankelijk van alle andere gebruikers werkt, voeren alle gebruikers dezelfde cyclus van stappen uit die hieronder worden weergegeven:
- Een databaseverbinding tot stand brengen.
- Herhaal dit totdat u wordt gesignaleerd om af te sluiten:
- Selecteer een willekeurige transactie (uit een gewogen verdeling).
- Voer de geselecteerde transactie uit en meet de reactietijd.
- Wacht op een tempovertraging.
- Sluit de databaseverbinding.
- Afsluiten.
De pacing-vertraging (in stap 2c) wordt willekeurig geselecteerd, maar met een verdeling met een gemiddelde van 1,0 seconde. Elke gebruiker kan dus gemiddeld maximaal één transactie per seconde genereren.
Regels voor schalen
Het aantal gebruikers wordt bepaald door de databasegrootte (in schaalfactoreenheden). Er is één gebruiker voor elke vijf schaalfactoreenheden. Vanwege de pacing-vertraging kan één gebruiker gemiddeld maximaal één transactie per seconde genereren.
Een schaalfactor van 500 (SF=500) heeft bijvoorbeeld 100 gebruikers en kan een maximumsnelheid van 100 TPS bereiken. Voor een hogere TPS-snelheid zijn meer gebruikers en een grotere database vereist.
Duur van meting
Een geldige benchmarkuitvoering vereist een stabiele meetduur van ten minste één uur.
Metrische gegevens
De belangrijkste metrische gegevens in de benchmark zijn doorvoer en reactietijd.
- Doorvoer is de essentiële prestatiemeting in de benchmark. Doorvoer wordt gerapporteerd in transacties per eenheid van tijd, waarbij alle transactietypen worden geteld.
- Reactietijd is een meting van de voorspelbaarheid van prestaties. De reactietijdbeperking varieert per serviceklasse, met hogere serviceklassen met een strengere reactietijdvereiste, zoals hieronder wordt weergegeven.
Klasse van service | Doorvoermeting | Vereiste reactietijd |
---|---|---|
Premium | Transacties per seconde | 95e percentiel bij 0,5 seconden |
Standaard | Transacties per minuut | 90e percentiel bij 1,0 seconden |
Basic | Transacties per uur | 80e percentiel bij 2,0 seconden |
Notitie
Metrische reactietijdgegevens zijn specifiek voor de DTU-benchmark. Reactietijden voor andere workloads zijn afhankelijk van de werkbelasting en verschillen.
Volgende stappen
Meer informatie over aankoopmodellen en gerelateerde concepten vindt u in de volgende artikelen:
- Overzicht van aankoopmodel op basis van DTU
- Aankoopmodel voor vCore - Azure SQL Database
- Aankoopmodellen op basis van vCore en DTU van Azure SQL Database vergelijken
- Azure SQL Database migreren van het DTU-model naar het vCore-model
- Resourcelimieten voor individuele databases met behulp van het DTU-aankoopmodel - Azure SQL Database
- Resourceslimieten voor elastische pools met behulp van het DTU-aankoopmodel