Configurare l'opzione di configurazione del server max worker threadsConfigure the max worker threads Server Configuration Option

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento si illustra come configurare l'opzione di configurazione del server max worker threads in SQL ServerSQL Server utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to configure the max worker threads server configuration option in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Con l'opzione max worker threads è possibile configurare il numero di thread di lavoro disponibili per i processi di SQL ServerSQL Server .The max worker threads option configures the number of worker threads that are available to SQL ServerSQL Server processes. SQL ServerSQL Server vengono utilizzati i servizi thread nativi dei sistemi operativi in modo che uno o più thread supportino ogni rete supportata simultaneamente in SQL ServerSQL Server , che tramite un altro thread vengano gestiti i checkpoint di database e che tutti gli utenti siano gestiti da un pool di thread. uses the native thread services of the operating systems so that one or more threads support each network that SQL ServerSQL Server supports simultaneously, another thread handles database checkpoints, and a pool of threads handles all users. Il valore predefinito per max worker threads è 0.The default value for max worker threads is 0. In questo modo, in SQL ServerSQL Server è possibile configurare automaticamente il numero di thread di lavoro all'avvio.This enables SQL ServerSQL Server to automatically configure the number of worker threads at startup. L'impostazione predefinita è la migliore per la maggior parte dei sistemi.The default setting is best for most systems. A seconda della configurazione del sistema, tuttavia, l'impostazione di max worker thread su un valore specifico determina talvolta un miglioramento delle prestazioni.However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Quando il numero effettivo di richieste di query è inferiore al valore impostato per max worker threads, viene assegnato un thread per la gestione di ogni richiesta.When the actual number of query requests is less than the amount set in max worker threads, one thread handles each query request. Se, tuttavia, il numero effettivo di richieste di query supera il valore impostato per max worker threads, in SQL ServerSQL Server i thread di lavoro vengono riuniti in un pool. In questo modo, le richieste possono essere gestite dal primo thread di lavoro disponibile.However, if the actual number of query request exceeds the amount set in max worker threads, SQL ServerSQL Server pools the worker threads so that the next available worker thread can handle the request.

Indicazioni Recommendations

  • Questa opzione è avanzata e la relativa modifica è riservata ad amministratori di database esperti o a tecnici dotati di certificazione per SQL ServerSQL Server .This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server technician.

  • La creazione di un pool di thread consente di ottimizzare le prestazioni quando al server è connesso un numero elevato di client.Thread pooling helps optimize performance when large numbers of clients are connected to the server. In genere viene creato un thread del sistema operativo distinto per ogni richiesta di query.Usually, a separate operating system thread is created for each query request. In presenza, tuttavia, di centinaia di connessioni al server, l'utilizzo di un thread per ogni richiesta di query può occupare quantità elevate di risorse di sistema.However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. L'opzione max worker threads consente di migliorare le prestazioni di SQL ServerSQL Server grazie alla creazione di un pool di thread di lavoro per soddisfare una maggiore quantità di richieste di query.The max worker threads option enables SQL ServerSQL Server to create a pool of worker threads to service a larger number of query requests, which improves performance.

  • Nella tabella seguente viene mostrato il numero massimo di thread di lavoro configurato automaticamente per diverse combinazioni di CPU e versioni di SQL ServerSQL Server.The following table shows the automatically configured number of max worker threads for various combinations of CPUs and versions of SQL ServerSQL Server.

    Numero di CPUNumber of CPUs computer a 32 bit32-bit computer Computer a 64 bit64-bit computer
    <= 4 processori<= 4 processors 256256 512512
    8 processori8 processors 288288 576576
    16 processori16 processors 352352 704704
    32 processori32 processors 480480 960960
    64 processori64 processors 736736 14721472
    128 processori128 processors 42244224 44804480
    256 processori256 processors 83208320 85768576

    Nota

    SQL ServerSQL Server non può più essere installato in un sistema operativo a 32 bit. can no longer be installed on a 32-bit operating system. I valori per i computer a 32 bit vengono indicati per offrire assistenza ai clienti che eseguono SQL Server 2014SQL Server 2014 e versioni precedenti.32-bit computer values are listed for the assistance of customers running SQL Server 2014SQL Server 2014 and earlier. Si consiglia 1024 come numero massimo di thread di lavoro per un'istanza di SQL ServerSQL Server in esecuzione in un computer a 32 bit.We recommend 1024 as the maximum number of worker threads for an instance of SQL ServerSQL Server that is running on a 32-bit computer.

    Nota

    Per consigli sull'uso di più di 64 CPU, vedere Procedure consigliate per l'esecuzione di SQL Server in computer con più di 64 CPU.For recommendations on using more than 64 CPUs, refer to Best Practices for Running SQL Server on Computers That Have More Than 64 CPUs.

  • Se tutti i thread di lavoro sono attivi con query a esecuzione prolungata, si potrebbe non ricevere alcuna risposta da SQL ServerSQL Server finché un thread di lavoro non viene completato e diventa disponibile.When all worker threads are active with long running queries, SQL ServerSQL Server might appear unresponsive until a worker thread completes and becomes available. Anche se non si tratta di un difetto, questo comportamento può talvolta risultare indesiderato.Although this is not a defect, it can sometimes be undesirable. Se non si riceve risposta da un processo e non è possibile elaborare alcuna query, connettersi a SQL ServerSQL Server utilizzando la connessione amministrativa dedicata (DAC) e terminare il processo.If a process appears to be unresponsive and no new queries can be processed, then connect to SQL ServerSQL Server using the dedicated administrator connection (DAC), and kill the process. Per evitare questo problema, aumentare il numero massimo di thread di lavoro.To prevent this, increase the number of max worker threads.

    L'opzione di configurazione del servermax worker threads non considera i thread che sono richiesti per tutte le attività di sistema come Gruppi di disponibilità, Service Broker, Gestione blocchi e altri.Themax worker threads server configuration option does not take into account threads that are required for all the system tasks such as Availibility Groups, Service Broker, Lock Manager, and others. Se viene superato il numero di thread configurato, la seguente query fornirà informazioni sulle attività di sistema che hanno generato i thread aggiuntivi.If the number of threads configured are being exceeded, the following query will provide information about the system tasks that have spawned the additional threads.

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;  

Sicurezza Security

Autorizzazioni Permissions

Le autorizzazioni di esecuzione per sp_configure senza alcun parametro o solo con il primo parametro vengono assegnate per impostazione predefinita a tutti gli utenti.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Per eseguire sp_configure con entrambi i parametri per la modifica di un'opzione di configurazione o per l'esecuzione dell'istruzione RECONFIGURE, a un utente deve essere concessa l'autorizzazione a livello di server ALTER SETTINGS.To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del server sysadmin e serveradmin .The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per configurare l'opzione max worker threadsTo configure the max worker threads option

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.In Object Explorer, right-click a server and select Properties.

  2. Fare clic sul nodo Processori .Click the Processors node.

  3. Nella casella Max worker threads digitare oppure selezionare un valore compreso tra 128 e 32767.In the Max worker threads box, type or select a value from 128 through 32767.

    L'opzione max worker threads consente di configurare il numero di thread di lavoro disponibili per i processi di SQL ServerSQL Server .Use the max worker threads option to configure the number of worker threads available to SQL ServerSQL Server processes. L'impostazione predefinita di max worker threads è ottimale per la maggior parte dei sistemi.The default setting for max worker threads is best for most systems. A seconda della configurazione del sistema, tuttavia, l'impostazione di max worker thread su un valore inferiore determina talvolta un miglioramento delle prestazioni.However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance.

Utilizzo di Transact-SQL Using Transact-SQL

Per configurare l'opzione max worker threadsTo configure the max worker threads option

  1. Connettersi al Motore di databaseDatabase Engine.Connect to the Motore di databaseDatabase Engine.

  2. Dalla barra Standard fare clic su Nuova query.From the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute. Questo esempio mostra come usare sp_configure per configurare l'opzione max worker threads su 900.This example shows how to use sp_configure to configure the max worker threads option to 900.

USE AdventureWorks2012 ;  
GO  
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE ;  
GO  
EXEC sp_configure 'max worker threads', 900 ;  
GO  
RECONFIGURE;  
GO  

Per altre informazioni, vedere Opzioni di configurazione del server (SQL Server).For more information, see Server Configuration Options (SQL Server).

Completamento: Dopo la configurazione dell'opzione max worker threads Follow Up: After you configure the max worker threads option

La modifica sarà applicata immediatamente senza richiedere il riavvio del Motore di databaseDatabase Engine .The change will take effect immediately without requiring the Motore di databaseDatabase Engine to restart.

Vedere ancheSee Also

RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
Opzioni di configurazione del server (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
Connessione di diagnostica per gli amministratori di databaseDiagnostic Connection for Database Administrators