Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Tento článek popisuje, jak nakonfigurovat max worker threads možnost konfigurace serveru v SQL Serveru pomocí aplikace SQL Server Management Studio nebo Transact-SQL. Tato max worker threads možnost konfiguruje počet pracovních vláken, která jsou k dispozici po celém serveru SQL pro zpracování požadavků na dotazy, přihlášení, odhlášení a podobných aplikačních požadavků.
SQL Server používá nativní služby vláken operačních systémů k zajištění následujících podmínek:
- Jedno nebo více vláken současně podporuje každou síť, kterou SQL Server podporuje.
- Jedno vlákno zpracovává kontrolní body databáze.
- Fond vláken zpracovává všechny uživatele.
Výchozí hodnota je max worker threads 0. Sql Server tak automaticky nakonfiguruje počet pracovních vláken při spuštění. Výchozí nastavení je nejvhodnější pro většinu systémů. V závislosti na konfiguraci systému ale nastavení max worker threads na konkrétní hodnotu někdy zvyšuje výkon.
Omezení
Skutečný počet požadavků na dotazy může překročit hodnotu nastavenou v max worker threads, v takovém případě SQL Server seskupuje vlákna pracovníka, aby další dostupné vlákno pracovníka mohlo zpracovat požadavek. Pracovní vlákno je přiřazeno pouze k aktivním požadavkům a uvolní se, jakmile je požadavek obsloužen. K tomu dochází i v případě, že relace nebo připojení uživatele, na kterém byl požadavek proveden, zůstane otevřená.
Možnost max worker threads konfigurace serveru neomezuje všechna vlákna, která se můžou ve stroji vytvořit. Systémová vlákna požadovaná pro úlohy, jako jsou LazyWriter, Checkpoint, Log Writer, Service Broker, Lock Manager nebo jiné, jsou vytvářeny mimo tento limit. Skupiny dostupnosti používají některá pracovní vlákna z max worker thread limit, ale navíc používají i systémová vlákna (viz Využití vláken podle skupin dostupnosti). Pokud je překročen počet nakonfigurovaných vláken, následující dotaz poskytuje informace o systémových úlohách, které vytvořila další vlákna.
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;
Doporučení
Tato možnost je pokročilá a měla by být změněna pouze zkušeným odborníkem na databázi.
Pokud máte podezření, že došlo k problému s výkonem, pravděpodobně se netýká dostupnosti pracovních vláken. Příčina pravděpodobněji souvisí s aktivitami, které zabírají pracovní vlákna a neuvolňují je. Mezi příklady patří dlouhotrvající dotazy nebo kritické body v systému (vstupně-výstupní operace, blokování, západky, čekání v síti), které způsobují dlouho čekající dotazy. Než změníte nastavení maximálního počtu pracovních vláken, je nejlepší najít hlavní příčinu problému s výkonem. Další informace o posouzení výkonu najdete v tématu Monitorování a ladění výkonu.
Sdružování vláken pomáhá optimalizovat výkon při připojení velkého počtu klientů k serveru. Pro každý požadavek dotazu se obvykle vytvoří samostatné vlákno operačního systému. Při použití stovek připojení k serveru ale může použití jednoho vlákna na požadavek na dotaz spotřebovávat velké množství systémových prostředků. Tato max worker threads možnost umožňuje SQL Serveru vytvořit fond pracovních vláken, aby mohl obsluhovat větší počet požadavků na dotazy, což zvyšuje výkon.
Následující tabulka ukazuje automaticky nakonfigurovaný počet maximálních pracovních vláken (pokud je hodnota nastavena na 0) na základě různých kombinací logických procesorů, architektury počítače a verzí SQL Serveru pomocí vzorce: Výchozí maximální počet pracovních procesů + ((logické procesory - 4) * Pracovní procesy na procesor).
| Počet logických procesorů | 32bitový počítač (až SQL Server 2014 (12.x)) | 64bitový počítač (až SQL Server 2016 (13.x) SP1) | 64bitový počítač (počínaje SQL Serverem 2016 (13.x) SP2 a SQL Serverem 2017 (14.x)) |
|---|---|---|---|
| <= 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 |
Až do SQL Server 2016 (13.x) včetně aktualizace Service Pack 1 závisí počet pracovníků na procesor pouze na architektuře (32bitová nebo 64bitová):
| Počet logických procesorů | počítač 32-bitový † | 64bitový počítač |
|---|---|---|
| <= 4 | 256 | 512 |
| > 4 | 256 + ((logické procesory - 4) * 8) | 512 †† + ((logické procesory - 4) * 16) |
† Od verze SQL Server 2016 (13.x) už nejde SQL Server nainstalovat do 32bitového operačního systému. 32bitové hodnoty počítačů jsou uvedeny pro pomoc zákazníkům se systémem SQL Server 2014 (12.x) a starším. Doporučujeme 1 024 jako maximální počet pracovních vláken pro instanci SQL Serveru, která běží na 32bitovém počítači.
†† Počínaje SQL Serverem 2017 (14.x) je výchozí hodnota Max Worker vydělena 2 pro počítače s méně než 2 GB paměti.
Počínaje SQL Serverem 2016 (13.x) SP2 a SQL Serverem 2017 (14.x) závisí pracovní procesy na procesor na architekturu a počet procesorů (mezi 4 a 64 nebo většími než 64):
| Počet logických procesorů | počítač 32-bitový † | 64bitový počítač |
|---|---|---|
| <= 4 | 256 | 512 |
| > 4 a <= 64 | 256 + ((logické procesory - 4) * 8) | 512 †† + ((logické procesory - 4) * 16) |
| > 64 | 256 + ((logické procesory - 4) * 32) | 512 †† + ((logické procesory - 4) * 32) |
† Od verze SQL Server 2016 (13.x) už nejde SQL Server nainstalovat do 32bitového operačního systému. 32bitové hodnoty počítačů jsou uvedeny pro pomoc zákazníkům se systémem SQL Server 2014 (12.x) a starším. Doporučujeme 1 024 jako maximální počet pracovních vláken pro instanci SQL Serveru, která běží na 32bitovém počítači.
†† Počínaje SQL Serverem 2017 (14.x) je výchozí hodnota Max Worker vydělena 2 pro počítače s méně než 2 GB paměti.
Návod
Další informace o používání více než 64 logických procesorů najdete v tématu Osvědčené postupy pro spouštění SQL Serveru na počítačích s více než 64 procesory.
Pokud jsou všechna pracovní vlákna aktivní s dlouhotrvajícími dotazy, SQL Server může vypadat jako nereagující, dokud se pracovní vlákno nedokončí a nebude k dispozici. I když toto chování není vadou, může být někdy nežádoucí. Pokud se zdá, že proces nereaguje a není možné zpracovat žádné nové dotazy, připojte se k SQL Serveru pomocí vyhrazeného připojení správce (DAC) a proces ukončete. Chcete-li tomu zabránit, zvyšte počet maximálních pracovních vláken.
Povolení
Ve výchozím nastavení se oprávnění ke spuštění sp_configure bez parametrů nebo pouze s prvním parametrem udělují všem uživatelům. Pokud chcete spustit sp_configure s oběma parametry pro změnu možnosti konfigurace nebo spuštění příkazu RECONFIGURE, musí být uživateli uděleno oprávnění na úrovni serveru ALTER SETTINGS. Oprávnění ALTER SETTINGS implicitně uchovává správce systému a správce serveru pevné role serveru.
Použití aplikace SQL Server Management Studio (SSMS)
V Průzkumníku objektů klikněte pravým tlačítkem na server a vyberte Vlastnosti.
Vyberte uzel Procesory.
Do pole Max worker threads (Maximální počet pracovních vláken ) zadejte nebo vyberte hodnotu od 128 do 65 535.
Návod
max worker threads Pomocí možnosti můžete nakonfigurovat počet pracovních vláken dostupných pro procesy SQL Serveru. Výchozí nastavení max worker threads pro většinu systémů je nejvhodnější. V závislosti na konfiguraci systému ale nastavení max worker threads na menší hodnotu někdy zvyšuje výkon. Další informace najdete v části Doporučení v tomto článku.
Použijte Transact-SQL
Připojte se k databázovému stroji.
Na panelu Standard vyberte Nový dotaz.
Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit. Tento příklad ukazuje, jak použít sp_configure ke konfiguraci
max worker threadsmožnosti900.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
Změna se projeví okamžitě po provedení příkazu RECONFIGURE, aniž by bylo nutné restartovat databázový stroj.
Související obsah
- možnosti konfigurace serveru
- PŘEKONFIGUROVAT (Transact-SQL)
-
sp_configure (Transact-SQL) - Diagnostické připojení pro správce databází