sql >> Database >  >> RDS >> Database

Opties voor het afstemmen van Azure SQL Database-prestaties

Azure SQL Database is het database-as-a-service-aanbod van Microsoft dat een enorme hoeveelheid flexibiliteit en beveiliging biedt en, als onderdeel van Microsoft's Platform-as-a-Service, profiteert van extra functies. Aangezien Azure SQL Database database-scope is, zijn er enkele grote verschillen als het gaat om het afstemmen van prestaties.

De instantie afstemmen

Veel items op instantieniveau die u gewend bent te configureren bij volledige installaties, zijn verboden terrein. Sommige van deze items omvatten:

  • Min en max servergeheugen instellen
  • Optimalisatie inschakelen voor ad-hocworkloads
  • Kostendrempel voor parallellisme wijzigen
  • De maximale mate van parallellisme op instantieniveau wijzigen
  • Tempdb optimaliseren met meerdere gegevensbestanden
  • Traceervlaggen

Wees niet te boos over sommige van deze. De instructie ALTER DATABASE SCOPED CONFIGURATION staat een flink aantal configuratie-instellingen op individueel databaseniveau toe. Dit werd geïntroduceerd met Azure SQL Database en in SQL Server vanaf SQL Server 2016. Enkele van deze instellingen zijn:

  • Cache procedure wissen
  • De MAXDOP instellen op een andere waarde dan nul
  • Stel het model voor het schatten van de kardinaliteit van de query-optimalisatie in
  • Hotfixes voor query-optimalisatie in- of uitschakelen
  • Snuiven van parameters in- of uitschakelen
  • De identiteitscache in- of uitschakelen
  • Schakel een gecompileerde planstub in of uit om in de cache te worden opgeslagen wanneer een batch voor de eerste keer wordt gecompileerd.
  • Schakel het verzamelen van uitvoeringsstatistieken in of uit voor native gecompileerde T-SQL-modules.
  • Standaard online-opties in- of uitschakelen voor DDL-instructies die de ONLINE=ON/OFF-syntaxis ondersteunen.
  • Schakel standaard hervatbare opties in of uit voor DDL-instructies die de RESUMABLE=ON/OFF-syntaxis ondersteunen.
  • De functie voor automatisch neerzetten van globale tijdelijke tabellen in- of uitschakelen

Zoals je kunt zien in de lijst met configuraties met een bereik, heb je veel controle en precisie voor het verfijnen van specifiek gedrag voor individuele databases. Voor sommige klanten kunnen de beperkingen voor controle op instantieniveau een negatief effect hebben, terwijl anderen het als een voordeel zullen zien.

Voor bedrijven die een database per klant hebben die volledige isolatie nodig heeft, is die ingebouwd in Azure SQL Database. Voor degenen die de mogelijkheden van SQL Server op exemplaarniveau nodig hebben, maar willen profiteren van het PaaS-aanbod van Microsoft, is er Azure SQL Managed Instance, dat op een instantie is toegespitst. Het doel is om 100% oppervlaktecompatibiliteit te hebben met SQL Server; u kunt dus min en max servergeheugen instellen, optimaliseren voor adhoc-workloads inschakelen en zowel MAXDOP als de kostendrempel voor parallellisme wijzigen. Tempdb op een beheerd exemplaar heeft al meerdere bestanden, maar u kunt er meer toevoegen en de standaardgrootte vergroten. In veel opzichten voelt het echt als de volledige installatie van SQL Server.

Query afstemmen

Een ander verschil tussen Azure SQL Database en SQL Server is dat Query Store standaard is ingeschakeld in Azure SQL Database. U kunt Query Store uitschakelen, maar dan beperkt u de Intelligent Performance-hulpprogramma's in de Azure Portal die deze gebruiken. Query Store is een functie die inzicht geeft in queryprestaties en plankeuze. Query Store legt ook een geschiedenis vast van query's, plannen en runtime-statistieken, zodat u kunt zien wat er aan de hand is. Wilt u weten welke query de hoogste hercompilatietijd, uitvoeringstijd, aantal uitvoeringen, CPU-gebruik, geheugengebruik, de meeste fysieke lees-/schrijfbewerkingen en meer heeft? Query Store heeft die informatie. Voor SQL Server moet u deze functie per database inschakelen. Als Query Store nieuw voor u is, heeft mijn collega Erin Stellato een drie uur durende cursus Pluralsight die u op weg helpt.

De categorie Intelligent Performance-tools heeft vier functies. Ten eerste biedt het prestatieoverzicht een samenvatting van uw algehele databaseprestaties door de top 5 van zoekopdrachten op te sommen op CPU-verbruik, eventuele aanbevelingen van automatisch afstemmen, afstemmingsactiviteit en huidige instellingen voor automatisch afstemmen. Deze landingspagina geeft u een snelle blik in uw prestaties.

Ten tweede zal de optie prestatie-aanbevelingen alle huidige aanbevelingen voor het maken van indexen weergeven of indexen laten vallen. Als er recente acties zijn voltooid, ziet u ook de geschiedenis.

Ten derde kunt u met Query Performance Insight een dieper inzicht krijgen in uw resourceverbruik door de top 5 query's per CPU, Data I/O of Log I/O te bekijken. De top 5 zoekopdrachten zijn kleurgecodeerd, zodat u snel het percentage van het totale verbruik visueel kunt zien. U kunt op de query-id klikken om meer details te krijgen, inclusief de SQL-tekst. Er is ook een langlopende query-tab. Ik vind het erg leuk dat Microsoft een dergelijke functie gratis in de Azure Portal heeft opgenomen. Het biedt waarde door klanten een portal te geven om de meest aanstootgevende vragen te zien. Wat ik hier een uitdaging vind, is een manier hebben om een ​​algemene basislijn te zien voor vergelijking van dag tot dag, week tot week en vorige maand. Voor een snelle analyse en overzicht is Query Performance Insight echter nuttig.

Het laatste kenmerk in deze categorie is automatisch afstemmen. Hier kunt u het krachtplan configureren, index maken en indexinstellingen laten vallen. U kunt het aan- of uitzetten of ervoor kiezen om het van de server te erven. Force-plan stelt Azure in staat om te kiezen wat volgens haar de beste uitvoeringsplannen zijn voor regressiequery's. Deze functie bestaat ook in SQL Server 2017 Enterprise Edition als automatische plancorrectie. Sommige DBA's worden nerveus als ze horen over de automatische afstemmingsfuncties, omdat ze bang zijn dat dit in de toekomst de behoefte aan DBA's zal vervangen. Ik stel altijd graag de vraag:"Hoeveel tijd besteedt u per dag aan het proactief afstemmen van vragen?". Het overweldigende antwoord is dat mensen eigenlijk heel weinig tijd kunnen besteden aan proactief afstemmen, en de meesten antwoorden dat de enige keer dat ze echt 'afstemmen' is na het vrijgeven van een code of wanneer gebruikers beginnen te klagen.

Naast de ingebouwde tools en de waarde van het gebruik van Query Store, zijn DMV's ook direct beschikbaar. Glenn Berry heeft een hele verzameling scripts alleen voor Azure SQL Database die u kunt gebruiken. Een bepaalde DMV die ik wil noemen, is sys.dm_os_wait_stats. Dit haalt het van het serverniveau, dus als je echt naar wachtstatistieken voor het databaseniveau wilt kijken, moet je in plaats daarvan sys.dm_db_wait_stats gebruiken.

Hardware – schalen

Een ander aandachtspunt bij het kijken naar prestaties met Azure SQL Database is de onderliggende hardware. Azure SQL Database wordt geprijsd op basis van Database Transaction Units (DTU's) en vCores. DTU's zijn een gemengde maatstaf voor CPU, geheugen en I/O en zijn er in drie niveaus; Basis, Standaard en Premium. Basic is slechts 5 DTU's, Standard-bereiken van 10-3.000 DTU's en Premium-bereiken van 125-4.000 DTU's. Voor de op vCore gebaseerde lagen hebben we General Purpose en Business Critical, variërend van 1-80 vCores.

In het DTU-model moet Basic worden overwogen voor ontwikkeling en testen. Het heeft slechts een back-upretentie van 7 dagen, dus ik zou het niet levensvatbaar achten voor productiegegevens. Standaard is goed voor een lage, gemiddelde en hoge CPU-vraag met een matige tot lage I/O-vraag. De laag Basic en Standard biedt 2,5 IOPS per DTU met 5 ms (lezen), 10 ms (schrijven). De Premium-laag is voor gemiddelde tot hoge CPU-vraag en hoge I/O en biedt 48 IOPS per DTU met 2 ms (lezen/schrijven). De Premium-laag heeft opslag die orden van grootte sneller is dan die standaard. In het vCore-model heb je Gen4-processors die 7 GB RAM per fysieke kern bieden en Gen 5-processors die 5,1 GB RAM per logische kern bieden. Vanuit een I/O-perspectief biedt General Purpose 500 IOPS per vCore met een max. Business Critical biedt 5.000 IOPS per core met een maximum van 200.000.

Samenvatting

Azure SQL Database is geweldig voor die systemen die database-isolatie nodig hebben, terwijl Azure SQL Managed Instance geweldig is voor die omgevingen waar je compatibiliteit op instantieniveau nodig hebt (ondersteuning voor cross-databasequery's). Wanneer u Azure SQL Database moet afstemmen, moet u dingen doen op databaseniveau, aangezien opties op exemplaarniveau niet zijn toegestaan, dus configuratie-instellingen met databasebereik zijn uw fijnafstemmingsopties. Bij het oplossen van problemen met slecht presterende query's heb je een aantal ingebouwde tools die helpen, waaronder Query Store, en de meeste van je reguliere afstemmingsscripts zullen werken. Het kan zijn dat u nog meer nodig heeft, zoals baselines, meer historische gegevens en de mogelijkheid om adviesvoorwaarden te creëren om u te helpen uw workloads te beheren. Dit is waar krachtige monitoringoplossingen zoals SentryOne DB Sentry kunnen helpen.

Als al het andere faalt, of als uw werklast gewoon is toegenomen tot voorbij uw huidige hardwarebronnen, schaal dan naar een hoger niveau.


  1. MySQL (of PHP?) Groepsresultaten op veldgegevens

  2. App werkt niet meer vanwege database

  3. Databasetips voor beginners

  4. Wijzig de tijdzone-offset op een datetimeoffset-waarde in SQL Server (T-SQL)