Configurer l'option de configuration de serveur max worker threadsConfigure the max worker threads Server Configuration Option

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Cette rubrique explique comment configurer l'option de configuration de serveur max worker threads dans SQL ServerSQL Server à l'aide de SQL Server Management StudioSQL Server Management Studio ou de 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. L'option max worker threads configure le nombre de threads de travail disponibles pour les processus 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 utilise les services de thread natifs des systèmes d'exploitation pour qu'un ou plusieurs threads prennent en charge chaque réseau que SQL ServerSQL Server prend en charge simultanément, qu'un autre thread prenne en charge les points de contrôle de base de données et qu'un pool de threads gère tous les utilisateurs.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. La valeur par défaut de Nombre maximum de threads de travail est 0.The default value for max worker threads is 0. Cela permet à SQL ServerSQL Server de configurer automatiquement le nombre de threads de travail au démarrage.This enables SQL ServerSQL Server to automatically configure the number of worker threads at startup. Ce paramètre par défaut convient à la plupart des systèmes.The default setting is best for most systems. Cependant, selon votre configuration système, l'attribution d'une valeur spécifique à l'option Nombre maximum de threads de travail permet parfois d'accroître les performances.However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

Dans cette rubriqueIn This Topic

Avant de commencerBefore You Begin

Limitations et restrictionsLimitations and Restrictions

  • Lorsque le nombre de demandes de requêtes est inférieur au nombre défini dans l'option Nombre maximum de threads de travail, un thread traite chaque demande de requête.When the actual number of query requests is less than the amount set in max worker threads, one thread handles each query request. En revanche, si le nombre de demandes de requête dépasse la valeur définie pour l'option Nombre maximum de threads de travail, SQL ServerSQL Server regroupe les threads de travail afin que le prochain thread de travail disponible puisse traiter la demande.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.

RecommandationsRecommendations

  • Seul un administrateur de base de données qualifié ou un spécialiste agréé doit changer cette option avancée SQL ServerSQL Server.This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server professional. Si vous suspectez un problème de performance, celui ne vient probablement pas de la disponibilité des threads.If you suspect that there is a performance problem, it is probably not the availability of worker threads. Le problème est plus vraisemblablement causé par des opérations d’E/S qui contraignent les threads de worker à attendre.The cause is more likely something like I/O that is causing the worker threads to wait. Nous vous conseillons d’identifier la cause racine d’un problème de performance avant de changer le paramètre max worker threads.It is best to find the root cause of a performance issue before you change the max worker threads setting.

  • Le regroupement de threads permet d'optimiser les performances lorsque de nombreux clients sont connectés au serveur.Thread pooling helps optimize performance when large numbers of clients are connected to the server. Habituellement, un thread de système d'exploitation séparé est créé pour chaque demande de requête.Usually, a separate operating system thread is created for each query request. Cependant, s'il existe des centaines de connexions au serveur, l'utilisation d'un thread par demande de requête peut consommer de grandes quantités de ressources système.However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. L'option Nombre maximum de threads de travail permet à SQL ServerSQL Server de créer un pool de threads de travail afin de servir un grand nombre de demandes de requête, ce qui améliore les performances.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.

  • Le tableau ci-dessous montre le nombre maximal de threads de travail automatiquement configuré pour différentes combinaisons d'UC et de versions de 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.

    Nombre d'unités centralesNumber of CPUs ordinateur 32 bits32-bit computer Ordinateur 64 bits64-bit computer
    <= 4 processeurs<= 4 processors 256256 512512
    8 processeurs8 processors 288288 576576
    16 processeurs16 processors 352352 704704
    32 processeurs32 processors 480480 960960
    64 processeurs64 processors 736736 14721472
    128 processeurs128 processors 42244224 44804480
    256 processeurs256 processors 83208320 85768576

    À l’aide de la formule suivante :Using the following formula:

    Nombre d'unités centralesNumber of CPUs ordinateur 32 bits32-bit computer Ordinateur 64 bits64-bit computer
    <= 4 processeurs<= 4 processors 256256 512512
    > 4 processeurs et < 64 processeurs> 4 processors and < 64 processors 256 + ((UC logiques - 4) * 8)256 + ((logical CPU's - 4) * 8) 512 + ((UC logiques - 4) * 16)512 + ((logical CPU's - 4) * 16)
    > 64 processeurs> 64 processors 256 + ((UC logiques - 4) * 32)256 + ((logical CPU's - 4) * 32) 512 + ((UC logiques - 4) * 32)512 + ((logical CPU's - 4) * 32)

    Notes

    SQL ServerSQL Server ne peut plus être installé sur un système d’exploitation 32 bits.can no longer be installed on a 32-bit operating system. Les valeurs d’ordinateur 32 bits sont répertoriées pour aider les clients exécutant SQL Server 2014 (12.x)SQL Server 2014 (12.x) et versions antérieures.32-bit computer values are listed for the assistance of customers running SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier. Nous vous recommandons d'utiliser 1 024 comme nombre maximal de threads de travail pour une instance de SQL ServerSQL Server exécutée sur un ordinateur 32 bits.We recommend 1,024 as the maximum number of worker threads for an instance of SQL ServerSQL Server that is running on a 32-bit computer.

    Notes

    Pour obtenir des recommandations concernant l’utilisation de plus de 64 unités centrales, consultez Recommandations pour l’exécution de SQL Server sur des ordinateurs comportant plus de 64 unités centrales.For recommendations on using more than 64 CPUs, refer to Best Practices for Running SQL Server on Computers That Have More Than 64 CPUs.

  • Lorsque tous les threads de travail traitent de longues requêtes, SQL ServerSQL Server peut sembler ne plus répondre jusqu'à ce qu'un thread de travail soit terminé et devienne disponible.When all worker threads are active with long running queries, SQL ServerSQL Server might appear unresponsive until a worker thread completes and becomes available. Même s'il ne s'agit pas d'une défaillance, ce comportement peut parfois être indésirable.Although this is not a defect, it can sometimes be undesirable. Si un processus semble ne pas répondre et si aucune nouvelle requête n'est traitée, connectez-vous à SQL ServerSQL Server à l'aide de la connexion administrateur dédiée (DAC) et terminez le processus.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. Pour éviter cette situation, augmentez la valeur de l'option max worker threads.To prevent this, increase the number of max worker threads.

L’option de configuration du serveur pour le nombre maximal de threads de travail ne limite pas tous les threads qui peuvent être générés dans le système.The max worker threads server configuration option does not limit all threads that may be spanwed in the system. Les threads requis pour des tâches telles que les groupes de disponibilité, Service Broker, le gestionnaire de verrous ou autres sont générés en dehors de cette limite.Threads required for tasks such as Availibility Groups, Service Broker, Lock Manager, or others are spawned outside this limit. Si le nombre de threads configurés est dépassé, la requête suivante fournit des informations sur les tâches système qui ont engendré les threads supplémentaires.If the number of threads configured is 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;  

SécuritéSecurity

AutorisationsPermissions

Les autorisations d’exécution de sp_configure , sans paramètre ou avec le premier paramètre uniquement, sont accordées par défaut à tous les utilisateurs.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Pour exécuter sp_configure avec les deux paramètres afin de modifier une option de configuration ou d’exécuter l’instruction RECONFIGURE, un utilisateur doit disposer de l’autorisation de niveau serveur 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’autorisation ALTER SETTINGS est implicitement détenue par les rôles serveur fixes sysadmin et serveradmin.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Utilisant SQL Server Management StudioSQL Server Management StudioUsing SQL Server Management StudioSQL Server Management Studio

Pour configurer l'option max worker threadsTo configure the max worker threads option

  1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur un serveur et sélectionnez Propriétés.In Object Explorer, right-click a server and select Properties.

  2. Cliquez sur le nœud Processeurs .Click the Processors node.

  3. Dans la zone du nombre maximum de threads de worker, tapez ou sélectionnez une valeur comprise entre 128 et 32 767.In the Max worker threads box, type or select a value from 128 through 32,767.

Conseil

Utilisez l'option de définition du nombre maximal de threads de travail pour définir le nombre de threads de travail disponibles pour SQL ServerSQL Server .Use the max worker threads option to configure the number of worker threads available to SQL ServerSQL Server processes. Le paramètre par défaut de max worker threads est adapté à la plupart des systèmes.The default setting for max worker threads is best for most systems. Cependant, selon votre configuration système, l'attribution d'une valeur plus faible à l'option max worker threads (Nombre maximum de threads de travail) permet parfois d'accroître les performances.However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance. Pour plus d’informations, consultez Recommandations dans cette page.See Recommendations in this page for more information.

Utilisation de Transact-SQLUsing Transact-SQL

Pour configurer l'option max worker threadsTo configure the max worker threads option

  1. Connectez-vous au Moteur de base de donnéesDatabase Engine.Connect to the Moteur de base de donnéesDatabase Engine.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.From the Standard bar, click New Query.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.Copy and paste the following example into the query window and click Execute. Cet exemple montre comment utiliser sp_configure pour attribuer à l’option max worker threads la valeur 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  

Suivi : Après avoir configuré l'option Nombre maximum de threads de travailFollow Up: After you configure the max worker threads option

Le changement prend effet immédiatement après l’exécution de RECONFIGURE, sans nécessiter le redémarrage du Moteur de base de donnéesDatabase Engine.The change will take effect immediately after executing RECONFIGURE, without requiring the Moteur de base de donnéesDatabase Engine to restart.

Voir aussiSee Also

Options de configuration de serveur (SQL Server) Server Configuration Options (SQL Server)
RECONFIGURE (Transact-SQL) RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
Connexion de diagnostic pour les administrateurs de base de donnéesDiagnostic Connection for Database Administrators