Megosztás a következőn keresztül:


A maximális párhuzamossági fok (MAXDOP) konfigurálása az Azure SQL Database-ben

A következőre vonatkozik: Azure SQL Database

Ez a cikk az Azure SQL Database max. párhuzamossági (MAXDOP) konfigurációs beállítását ismerteti.

Megjegyzés:

Ez a tartalom az Azure SQL Database-re összpontosít. Az Azure SQL Database a Microsoft SQL Server adatbázismotor legújabb stabil verzióján alapul, így a tartalom nagy része hasonló, bár a hibaelhárítás és a konfigurációs lehetőségek eltérnek. További információ az SQL Server MAXDOP-járól: A párhuzamosság maximális fokának konfigurálása kiszolgálókonfigurációs lehetőség.

Áttekintés

A MAXDOP szabályozza a lekérdezések közötti párhuzamosságot az adatbázismotorban. A magasabb MAXDOP értékek általában több párhuzamos szálat eredményeznek lekérdezésenként, és gyorsabban hajtják végre a lekérdezéseket.

Az Azure SQL Database alapértelmezett MAXDOP-beállításának értéke minden új önálló adatbázis és rugalmas adatbáziskészlet esetén 8. Ez az alapértelmezett beállítás megakadályozza a szükségtelen erőforrás-használatot, ugyanakkor lehetővé teszi, hogy az adatbázismotor gyorsabban hajtsa végre a lekérdezéseket párhuzamos szálak használatával. Általában nem szükséges tovább konfigurálni a MAXDOP-t az Azure SQL Database számítási feladataiban, bár ez a teljesítmény finomhangolási gyakorlataként előnyökkel járhat.

Megjegyzés:

2020 szeptemberében az Azure SQL Database szolgáltatásban a MAXDOP 8 több éves telemetriai adatok alapján lett az alapértelmezett az új adatbázisok esetében, mivel ez az optimális érték a legkülönfélébb ügyfél-számítási feladatokhoz. Ez az alapértelmezett beállítás segített megelőzni a túlzott párhuzamosság miatti teljesítményproblémát. Ezt megelőzően az új adatbázisok alapértelmezett beállítása a MAXDOP 0 volt. A MAXDOP nem lett automatikusan módosítva a 2020 szeptembere előtt létrehozott meglévő adatbázisok esetében.

Általánosságban elmondható, hogy ha az adatbázismotor párhuzamosság használatával hajt végre lekérdezést, a végrehajtási idő rövidebb lesz. However, excess parallelism can consume additional processor resources without improving query performance. At scale, excess parallelism can negatively affect query performance for all queries executing on the same database engine instance. A párhuzamosság felső határának beállítása hagyományosan gyakori teljesítményhangolási gyakorlat volt az SQL Server számítási feladataiban.

Az alábbi táblázat az adatbázismotor viselkedését ismerteti a különböző MAXDOP-értékekkel rendelkező lekérdezések végrehajtásakor:

MAXDOP Működés
= 1 Az adatbázismotor egyetlen soros szálat használ a lekérdezések végrehajtásához. A párhuzamos szálak nem használhatók.
> 1 Az adatbázismotor beállítja a párhuzamos szálak által használandó további ütemezők számát a MAXDOP értékre vagy a logikai processzorok teljes számára, attól függően, hogy melyik kisebb.
= 0 Az adatbázismotor a párhuzamos szálak által használandó további ütemezők számát a logikai processzorok teljes számára vagy 64-re állítja, attól függően, hogy melyik kisebb.

Megjegyzés:

Minden lekérdezés legalább egy ütemezővel és egy feldolgozószállal fut az ütemezőn.

A párhuzamossággal futtatott lekérdezések további ütemezőket és további párhuzamos szálakat használnak. Mivel több párhuzamos szál is végrehajtható ugyanazon az ütemezőn, a lekérdezés végrehajtásához használt szálak teljes száma magasabb lehet a megadott MAXDOP-értéknél vagy a logikai processzorok teljes számánál. További információ: Párhuzamos tevékenységek ütemezése.

Considerations

  • Az Azure SQL Database-ben módosíthatja az alapértelmezett MAXDOP-értéket:

  • Az SQL Server MAXDOP hosszú ideje fennálló szempontjai és javaslatai az Azure SQL Database-hez alkalmazhatók.

  • Az indexet létrehozó vagy újraépítendő, vagy fürtözött indexet elvető indexműveletek erőforrásigényesek lehetnek. Az adatbázis MAXDOP-értékét felülbírálhatja az indexműveletek esetében a MAXDOP index beállítás megadásával az vagy ALTER INDEX utasításbanCREATE INDEX. A MAXDOP értéket a rendszer a végrehajtási időpontban alkalmazza az utasításra, és nem tárolja az index metaadataiban. További információ: Párhuzamos indexelési műveletek konfigurálása.

  • A lekérdezések és az indexműveletek mellett a MAXDOP adatbázis-hatókörű konfigurációs beállítása más, párhuzamos végrehajtást használó utasítások párhuzamosságát is szabályozza, például a DBCC CHECKTABLE, a DBCC CHECKDB és a DBCC CHECKFILEGROUP parancsot.

Javaslatok

Az adatbázis MAXDOP-jának módosítása jelentős hatással lehet a lekérdezési teljesítményre és az erőforrás-kihasználtságra, mind pozitív, mind negatív. Nincs azonban egyetlen MAXDOP-érték, amely minden számítási feladathoz optimális. A MAXDOP beállítására vonatkozó javaslatok árnyaltak, és számos tényezőtől függenek.

Egyes egyidejű csúcsterhelések jobban működhetnek más MAXDOP-val, mint mások. A megfelelően konfigurált MAXDOP-nak csökkentenie kell a teljesítmény- és rendelkezésreállási incidensek kockázatát, és bizonyos esetekben csökkentheti a költségeket azáltal, hogy el tudja kerülni a szükségtelen erőforrás-használatot, és így alacsonyabb szolgáltatási célkitűzésre skálázható le.

Túlzott párhuzamosság

A magasabb MAXDOP gyakran csökkenti a processzorigényes lekérdezések időtartamát. A túlzott párhuzamosság azonban ronthatja a számítási feladatok egyéb egyidejű teljesítményét azáltal, hogy más cpu- és feldolgozószál-erőforrások lekérdezéseit éhezteti. Szélsőséges esetekben a túlzott párhuzamosság az összes adatbázis- vagy rugalmas készleterőforrást felhasználhatja, ami lekérdezési időtúllépéseket, hibákat és alkalmazáskimaradásokat okozhat.

Tipp.

Azt javasoljuk, hogy az ügyfelek ne állítsa a MAXDOP értékét 0 értékre, még akkor is, ha az jelenleg nem okoz problémát.

A túlzott párhuzamosság akkor válik a legnagyobb problémássá, ha több egyidejű kérés van, mint amennyit a szolgáltatás célkitűzése által biztosított CPU- és feldolgozószál-erőforrások támogatnak. Kerülje el a MAXDOP 0-t, hogy csökkentse a lehetséges jövőbeli problémák kockázatát a túlzott párhuzamosság miatt, ha egy adatbázis fel van skálázva, vagy ha az Azure SQL Database jövőbeli hardverkonfigurációi több magot biztosítanak ugyanahhoz az adatbázis-szolgáltatási célkitűzéshez.

A MAXDOP módosítása

Ha úgy ítéli meg, hogy az alapértelmezetttől eltérő MAXDOP-beállítás optimális az Azure SQL Database számítási feladataihoz, használhatja a ALTER DATABASE SCOPED CONFIGURATION T-SQL utasítást. Példákért tekintse meg az alábbi Transact-SQL-t használó példákat. Ha a MAXDOP-t nem alapértelmezett értékre szeretné módosítani minden újonnan létrehozott adatbázis esetében, vegye fel ezt a lépést az adatbázis üzembe helyezésének folyamatába.

Ha a nem alapértelmezett MAXDOP csak a számítási feladat lekérdezéseinek egy kis részhalmazát használja, felülbírálhatja a MAXDOP-t a lekérdezés szintjén az OPTION (MAXDOP) tipp hozzáadásával. Példákért tekintse meg az alábbi Transact-SQL-t használó példákat.

A MAXDOP-konfiguráció változásainak alapos tesztelése terhelésteszteléssel, amely valós egyidejű lekérdezési terheléseket is magában foglal.

Az elsődleges és másodlagos replikákHOZ tartozó MAXDOP egymástól függetlenül konfigurálható, ha a különböző MAXDOP-beállítások optimálisak az írási és írásvédett számítási feladatokhoz. Ez az Azure SQL Database olvasási felskálázási, georeplikációs és rugalmas skálázású másodlagos replikáira vonatkozik. Alapértelmezés szerint az összes másodlagos replika örökli az elsődleges replika MAXDOP-konfigurációját.

Biztonság

Permissions

Az ALTER DATABASE SCOPED CONFIGURATION utasítást kiszolgálói rendszergazdaként, az adatbázis-szerepkör db_ownertagjaként vagy olyan felhasználóként kell végrehajtani, aki megkapta az ALTER ANY DATABASE SCOPED CONFIGURATION engedélyt.

Példák

Ezek a példák a legújabb AdventureWorksLT mintaadatbázist használják, amikor az SAMPLE Azure SQL Database új önálló adatbázisához van kiválasztva a lehetőség.

PowerShell

MAXDOP-adatbázis hatókörű konfigurációja

Ez a példa bemutatja, hogyan használható az ALTER DATABA Standard kiadás SCOPED CONFIGURATION utasítás a MAXDOP konfiguráció beállításához2. A beállítás azonnal érvénybe lép az új lekérdezések esetében. Az Invoke-SqlCmd PowerShell-parancsmag végrehajtja a beállítani kívánt T-SQL-lekérdezéseket, és visszaadja a MAXDOP-adatbázis hatókörű konfigurációját.

$dbName = "sample" 
$serverName = <server name here>
$serveradminLogin = <login here>
$serveradminPassword = <password here>
$desiredMAXDOP = 8

$params = @{
    'database' = $dbName
    'serverInstance' =  $serverName
    'username' = $serveradminLogin
    'password' = $serveradminPassword
    'outputSqlErrors' = $true
    'query' = 'ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = ' + $desiredMAXDOP + ';
     SELECT [value] FROM sys.database_scoped_configurations WHERE [name] = ''MAXDOP'';'
  }
  Invoke-SqlCmd @params

Ez a példa az Azure SQL Database-hez használható olvasási felskálázási replikákkal, a georeplikálással és az Azure SQL Database rugalmas skálázású másodlagos replikákkal. Az elsődleges replika például másodlagos replikaként egy másik alapértelmezett MAXDOP-ra van beállítva, amely arra számít, hogy az írási-írási és az írásvédett számítási feladatok között eltérések lehetnek.

$dbName = "sample" 
$serverName = <server name here>
$serveradminLogin = <login here>
$serveradminPassword = <password here>
$desiredMAXDOP_primary = 8
$desiredMAXDOP_secondary_readonly = 1
 
$params = @{
    'database' = $dbName
    'serverInstance' =  $serverName
    'username' = $serveradminLogin
    'password' = $serveradminPassword
    'outputSqlErrors' = $true
    'query' = 'ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = ' + $desiredMAXDOP_primary + ';
    ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET MAXDOP = ' + $desiredMAXDOP_secondary_readonly + ';
    SELECT [value], value_for_secondary FROM sys.database_scoped_configurations WHERE [name] = ''MAXDOP'';'
  }
  Invoke-SqlCmd @params

Transact-SQL

Az Azure Portal lekérdezésszerkesztőjével, az SQL Server Management Studióval (SSMS) vagy az Azure Data Studióval T-SQL-lekérdezéseket hajthat végre az Azure SQL Database-en.

  1. Nyisson meg egy új lekérdezési ablakot.

  2. Csatlakozás arra az adatbázisra, ahol módosítani szeretné a MAXDOP-t. Az adatbázis hatókörébe tartozó konfigurációk nem módosíthatók az master adatbázisban.

  3. Másolja és illessze be a következő példát a lekérdezési ablakba, és válassza az Végrehajtás lehetőséget.

MAXDOP-adatbázis hatókörű konfigurációja

Ez a példa bemutatja, hogyan határozhatja meg az adatbázis MAXDOP adatbázis-hatókörű konfigurációját a sys.database_scoped_configurations rendszerkatalógus nézetével.

SELECT [value] FROM sys.database_scoped_configurations WHERE [name] = 'MAXDOP';

Ez a példa bemutatja, hogyan használható az ALTER DATABA Standard kiadás SCOPED CONFIGURATION utasítás a MAXDOP konfiguráció beállításához8. A beállítás azonnal érvénybe lép.

ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 8;

Ez a példa az Azure SQL Database-hez használható, ha engedélyezve van az olvasási felskálázási replikák, a georeplikálás és a rugalmas skálázású másodlagos replikák. Az elsődleges replika például egy másik MAXDOP-ra van beállítva, mint a másodlagos replika, amely arra számít, hogy lehetnek különbségek az írásvédett és az írásvédett számítási feladatok között. A rendszer minden utasítást végrehajt az elsődleges replikán. A value_for_secondary másodlagos replika beállításainak sys.database_scoped_configurations oszlopa.

ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 8;
ALTER DATABASE SCOPED CONFIGURATION FOR SECONDARY SET MAXDOP = 1;
SELECT [value], value_for_secondary FROM sys.database_scoped_configurations WHERE [name] = 'MAXDOP';

MAXDOP lekérdezési tipp

Ez a példa bemutatja, hogyan hajthat végre lekérdezést a lekérdezési tipp használatával, hogy kényszerítse a lekérdezést2.max degree of parallelism

SELECT ProductID, OrderQty, SUM(LineTotal) AS Total  
FROM SalesLT.SalesOrderDetail  
WHERE UnitPrice < 5  
GROUP BY ProductID, OrderQty  
ORDER BY ProductID, OrderQty  
OPTION (MAXDOP 2);    
GO

MAXDOP indexbeállítás

Ez a példa bemutatja, hogyan lehet újraépíteni egy indexet az index beállításával, hogy kényszerítse a parancsot12.max degree of parallelism

ALTER INDEX ALL ON SalesLT.SalesOrderDetail 
REBUILD WITH 
   (     MAXDOP = 12
       , SORT_IN_TEMPDB = ON
       , ONLINE = ON);

Kapcsolódó információk

Következő lépések