Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Ez a cikk azt ismerteti, hogyan konfigurálhatja a kiszolgálókonfigurációs beállítást az max worker threads SQL Server Management Studio vagy a Transact-SQL használatával. Ez max worker threads a beállítás konfigurálja az SQL Server-szerte elérhető feldolgozói szálak számát a lekérdezési kérelmek, a bejelentkezés, a kijelentkezés és a hasonló alkalmazáskérések feldolgozásához.
Az SQL Server az operációs rendszerek natív szálszolgáltatásait használja a következő feltételek biztosítására:
- Egy vagy több szál egyszerre támogatja az SQL Server által támogatott hálózatokat.
- Egy szál kezeli az adatbázis ellenőrzőpontjait.
- A szálak készlete minden felhasználót kezel.
A max worker threads alapértelmezett értéke 0. Ez lehetővé teszi, hogy az SQL Server automatikusan konfigurálja a munkavégző szálak számát indításkor. Az alapértelmezett beállítás a legtöbb rendszer esetében a legjobb. A rendszerkonfigurációtól függően azonban egy adott értékre való beállítás max worker threads néha javítja a teljesítményt.
Korlátozások
A lekérdezési kérelmek tényleges száma meghaladhatja a beállított max worker threads értéket, ebben az esetben az SQL Server a feldolgozói szálakat úgy állítja össze, hogy a következő elérhető feldolgozószál kezelni tudja a kérést. A munkavégző szál csak aktív kérésekhez van hozzárendelve, és a kérés kiszolgálása után szabadul fel. Ez akkor is megtörténik, ha a kérelem alapjául szolgáló felhasználói munkamenet/kapcsolat nyitva marad.
A max worker threads kiszolgálókonfigurációs beállítás nem korlátozza a motoron belüli összes szálat. Az olyan feladatokhoz szükséges rendszerszálak, mint a LazyWriter, a Checkpoint, a Naplóíró, a Szolgáltatásközvetítő, a Lock Manager vagy mások, ezen a korláton kívül jönnek létre. A rendelkezésre állási csoportok a max worker thread limit munkavégző szálak egy részét használják, valamint rendszerszálakat is (lásd: Szálhasználat a rendelkezésre állási csoportok által). Ha a konfigurált szálak száma túllépi a konfigurált szálak számát, az alábbi lekérdezés információt nyújt a további szálakat generáló rendszerfeladatokról.
SELECT s.session_id,
r.command,
r.status,
r.wait_type,
r.scheduler_id,
w.worker_address,
w.is_preemptive,
w.state,
t.task_state,
t.session_id,
t.exec_context_id,
t.request_id
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_exec_requests AS r
ON s.session_id = r.session_id
INNER JOIN sys.dm_os_tasks AS t
ON r.task_address = t.task_address
INNER JOIN sys.dm_os_workers AS w
ON t.worker_address = w.worker_address
WHERE s.is_user_process = 0;
Ajánlások
Ez a beállítás egy speciális lehetőség, és csak tapasztalt adatbázis-szakembernek kell módosítania.
Ha arra gyanakszik, hogy teljesítményprobléma áll fenn, valószínűleg nem a feldolgozószálak rendelkezésre állása. Az ok nagyobb valószínűséggel a munkavégző szálakat elfoglaló és nem felszabadító tevékenységekhez kapcsolódik. Ilyenek például a rendszer hosszú ideig futó lekérdezései vagy szűk keresztmetszetei (I/O, blokkolás, reteszes várakozások, hálózati várakozások), amelyek hosszú ideig várakozó lekérdezéseket okoznak. A maximális munkaszál-beállítás módosítása előtt érdemes megtalálni a teljesítményproblémák kiváltó okát. A teljesítmény értékeléséről további információt a Teljesítmény figyelése és finomhangolása című témakörben talál.
A szálkészletezés segít optimalizálni a teljesítményt, amikor nagy számú ügyfél csatlakozik a kiszolgálóhoz. Általában minden lekérdezéskéréshez külön operációsrendszer-szál jön létre. Ha azonban több száz kapcsolat van a kiszolgálóval, lekérdezési kérésenként egy szál használata nagy mennyiségű rendszererőforrást képes felhasználni. Ez a max worker threads beállítás lehetővé teszi, hogy az SQL Server feldolgozószálak készletét hozza létre nagyobb számú lekérdezési kérés kiszolgálásához, ami javítja a teljesítményt.
Az alábbi táblázat a maximális feldolgozói szálak automatikusan konfigurált számát mutatja be (ha az érték 0-ra van állítva) a logikai CPU-k, a számítógépes architektúra és az SQL Server különböző verzióinak különböző kombinációi alapján, a következő képlettel: Default Max Workers + ((logikai PROCESSZORok – 4) * Feldolgozók processzoronként).
| Logikai CPU-k száma | 32 bites számítógép (legfeljebb SQL Server 2014 (12.x)) | 64 bites számítógép (legfeljebb SQL Server 2016 (13.x) SP1) | 64 bites számítógép (az SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) verziótól kezdve) |
|---|---|---|---|
| <= 4 | 256 | 512 | 512 |
| 8 | 288 | 576 | 576 |
| 16 | 352 | 704 | 704 |
| 32 | 480 | 960 | 960 |
| 64 | 736 | 1472 | 1472 |
| 128 | 1248 | 2496 | 4480 |
| 256 | 2272 | 4544 | 8576 |
Az 1. szervizcsomaggal rendelkező SQL Server 2016-ig (13.x) a processzoronkénti feldolgozók csak az architektúrától függnek (32 bites vagy 64 bites):
| Logikai CPU-k száma | 32 bites számítógép † | 64 bites számítógép |
|---|---|---|
| <= 4 | 256 | 512 |
| > 4 | 256 + ((logikai processzorok - 4) * 8) | 512 †† + ((logikai processzorok - 4) * 16) |
† Az SQL Server 2016 -tól kezdve (13.x) az SQL Server már nem telepíthető 32 bites operációs rendszerre. A 32 bites számítógépértékek az SQL Server 2014 -et (12.x) és korábbi verziót futtató ügyfelek segítségére vannak felsorolva. A 32 bites számítógépen futó SQL Server-példányok munkaszálainak maximális száma 1024.
†† Az SQL Server 2017-től (14.x) kezdődően az Alapértelmezett maximális feldolgozók érték 2-vel van osztva a 2 GB-nál kevesebb memóriával rendelkező gépek esetében.
Az SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) verziójától kezdve a processzoronkénti feldolgozók az architektúrától és a processzorok számától függnek (4 és 64 közötti vagy 64-nél nagyobb):
| Logikai CPU-k száma | 32 bites számítógép † | 64 bites számítógép |
|---|---|---|
| <= 4 | 256 | 512 |
| > 4 és <= 64 | 256 + ((logikai processzorok - 4) * 8) | 512 †† + ((logikai processzorok - 4) * 16) |
| > 64 | 256 + ((logikai processzorok - 4) * 32) | 512 †† + ((logikai processzorok - 4) * 32) |
† Az SQL Server 2016 -tól kezdve (13.x) az SQL Server már nem telepíthető 32 bites operációs rendszerre. A 32 bites számítógépértékek az SQL Server 2014 -et (12.x) és korábbi verziót futtató ügyfelek segítségére vannak felsorolva. A 32 bites számítógépen futó SQL Server-példányok munkaszálainak maximális száma 1024.
†† Az SQL Server 2017-től (14.x) kezdődően az Alapértelmezett maximális feldolgozók érték 2-vel van osztva a 2 GB-nál kevesebb memóriával rendelkező gépek esetében.
Jótanács
További információ a több mint 64 logikai PROCESSZOR használatáról: Ajánlott eljárások az SQL Server 64-nél több processzort tartalmazó számítógépeken való futtatásához.
Ha minden munkavégző szál aktív, és hosszú ideig futó lekérdezések futnak, előfordulhat, hogy az SQL Server nem válaszol, amíg a munkaszál befejeződik, és elérhetővé nem válik. Bár ez a viselkedés nem hiba, néha nemkívánatos lehet. Ha úgy tűnik, hogy egy folyamat nem válaszol, és nem lehet új lekérdezéseket feldolgozni, akkor csatlakozzon az SQL Serverhez a dedikált rendszergazdai kapcsolat (DAC) használatával, és tiltsa le a folyamatot. Ennek elkerülése érdekében növelje a maximális munkaszálak számát.
Engedélyek
A sp_configure végrehajtási engedélyei paraméterek nélkül vagy csak az első paraméterrel alapértelmezés szerint minden felhasználónak adottak. A konfigurációs beállítás módosításához vagy a sp_configure utasítás futtatásához mindkét paraméterrel rendelkező RECONFIGURE végrehajtásához a felhasználónak rendelkeznie kell a ALTER SETTINGS kiszolgálószintű engedéllyel. A ALTER SETTINGS engedélyt implicit módon a sysadmin és serveradmin rögzített kiszolgálói szerepkörök birtokolják.
Az SQL Server Management Studio (SSMS) használata
Az Object Explorerben kattintson a jobb gombbal egy kiszolgálóra, és válassza a Tulajdonságok lehetőséget.
Válassza ki a Processzorok csomópontot.
A Feldolgozói szálak maximális száma mezőbe írjon be vagy válasszon ki egy értéket 128 és 65 535 között.
Jótanács
Ezzel a max worker threads beállítással konfigurálhatja az SQL Server-folyamatok számára elérhető feldolgozói szálak számát. Az alapértelmezett beállítás max worker threads a legtöbb rendszer esetében a legjobb. A rendszerkonfigurációtól függően azonban a kisebb értékre való beállítás max worker threads néha javítja a teljesítményt. További információkért tekintse meg a cikk Javaslatok szakaszát.
Használd a Transact-SQL-t
Csatlakozzon az adatbázismotorhoz.
A Standard sávon válassza az Új lekérdezés lehetőséget.
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. Ez a példa bemutatja, hogyan használható az sp_configure a
max worker threadsopció900konfigurálásához.USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXECUTE sp_configure 'max worker threads', 900; GO RECONFIGURE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
A módosítás a RECONFIGURE végrehajtása után azonnal érvénybe lép anélkül, hogy az adatbázismotort újra kellene indítani.