Share via


Configurare l'opzione di configurazione del server max worker threads

In questo argomento si illustra come configurare l'opzione di configurazione del server max worker threads in SQL Server utilizzando SQL Server Management Studio o Transact-SQL. Con l'opzione max worker threads è possibile configurare il numero di thread di lavoro disponibili per i processi di SQL Server. In SQL Server vengono utilizzati i servizi thread nativi dei sistemi operativi in modo che uno o più thread supportino ogni rete supportata simultaneamente da SQL Server, un altro thread gestisca i checkpoint di database e un pool di thread gestisca tutti gli utenti. Il valore predefinito per max worker threads è 0. In questo modo, in SQL Server è possibile configurare automaticamente il numero di thread di lavoro all'avvio. L'impostazione predefinita è la migliore per la maggior parte dei sistemi. A seconda della configurazione del sistema, tuttavia, l'impostazione di max worker thread su un valore specifico determina talvolta un miglioramento delle prestazioni.

Contenuto dell'argomento

  • Prima di iniziare:

    Limitazioni e restrizioni

    Consigli

    Sicurezza

  • Per configurare l'opzione max worker threads utilizzando:

    SQL Server Management Studio

    Transact-SQL

  • Completamento:  Dopo la configurazione dell'opzione max worker threads

Prima di iniziare

Limitazioni e restrizioni

  • 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. Se, tuttavia, il numero effettivo di richieste di query supera il valore impostato per max worker threads, in SQL Server i thread di lavoro vengono riuniti in un pool. In questo modo, le richieste possono essere gestite dal primo thread di lavoro disponibile.

Consigli

  • Questa opzione è avanzata e la relativa modifica è riservata ad amministratori di database esperti o a tecnici dotati di certificazione per SQL Server.

  • La creazione di un pool di thread consente di ottimizzare le prestazioni quando al server è connesso un numero elevato di client. In genere viene creato un thread del sistema operativo distinto per ogni richiesta di query. 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. L'opzione max worker threads consente di migliorare le prestazioni di SQL Server grazie alla creazione di un pool di thread di lavoro per soddisfare una maggiore quantità di richieste di query.

  • Nella tabella seguente viene mostrato il numero massimo di thread di lavoro configurato automaticamente per diverse combinazioni di CPU e versioni di SQL Server.

    Numero di CPU

    Computer a 32 bit

    Computer a 64 bit

    <= 4 processori

    256

    512

    8 processori

    288

    576

    16 processori

    352

    704

    32 processori

    480

    960

    64 processori

    736

    1472

    128 processori

    4224

    4480

    256 processori

    8320

    8576

    [!NOTA]

    Per consigli sull'utilizzo di più di 64 CPU, fare riferimento a Procedure consigliate per l'esecuzione di SQL Server in computer che dispongono di oltre 64 CPU.

    Nota di attenzioneAttenzione

    Si consiglia 1024 come numero massimo di thread di lavoro per un'istanza di SQL Server in esecuzione in un computer a 32 bit.

  • Se tutti i thread di lavoro sono attivi con query a esecuzione prolungata, si potrebbe non ricevere alcuna risposta da SQL Server finché un thread di lavoro non viene completato e diventa disponibile. Anche se non si tratta di un difetto, questo comportamento può talvolta risultare indesiderato. Se non si riceve risposta da un processo e non è possibile elaborare alcuna query, connettersi a SQL Server utilizzando la connessione amministrativa dedicata (DAC) e terminare il processo. Per evitare questo problema, aumentare il numero massimo di thread di lavoro.

L'opzione di configurazione del server max worker threads non considera i thread necessari per tutte le attività di sistema come Gruppi di disponibilità, Service Broker, Gestione blocchi e altre. Se il numero di thread configurato viene superato, la query seguente fornisce informazioni sulle attività di sistema che hanno generato i thread aggiuntivi.

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
INNERJOIN 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

Autorizzazioni

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. Per eseguire sp_configure con entrambi i parametri per modificare un'opzione di configurazione o per eseguire l'istruzione RECONFIGURE, a un utente deve essere concessa l'autorizzazione a livello di server ALTER SETTINGS. L'autorizzazione ALTER SETTINGS è assegnata implicitamente ai ruoli predefiniti del server sysadmin e serveradmin.

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Utilizzo di SQL Server Management Studio

Per configurare l'opzione max worker threads

  1. In Esplora oggetti fare clic con il pulsante destro del mouse su un server e scegliere Proprietà.

  2. Fare clic sul nodo Processori.

  3. Nella casella Max worker threads digitare oppure selezionare un valore compreso tra 128 e 32767.

    L'opzione max worker threads consente di configurare il numero di thread di lavoro disponibili per i processi di SQL Server. L'impostazione predefinita di max worker threads è ottimale per la maggior parte dei sistemi. A seconda della configurazione del sistema, tuttavia, l'impostazione di max worker thread su un valore inferiore determina talvolta un miglioramento delle prestazioni.

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Utilizzo di Transact-SQL

Per configurare l'opzione max worker threads

  1. Connettersi al Motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. In questo esempio si illustra come utilizzare sp_configure per configurare l'opzione max worker threads su 900.

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

Per ulteriori informazioni, vedere Opzioni di configurazione del server.

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Completamento: Dopo la configurazione dell'opzione max worker threads

La modifica sarà applicata immediatamente senza richiedere il riavvio del Motore di database.

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Vedere anche

Riferimento

RECONFIGURE (Transact-SQL)

sp_configure (Transact-SQL)

Concetti

Opzioni di configurazione del server

Connessione di diagnostica per gli amministratori di database