руководство по архитектуре потоков и задачThread and Task Architecture Guide

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Планирование задач операционной системыOperating system task scheduling

Потоки — это наименьшие единицы обработки, которые могут быть выполнены операционной системой. Они позволяют разделять логику приложения на несколько параллельных путей выполнения.Threads are the smallest units of processing that can be executed by an operating system, and allow the application logic to be separated into several concurrent execution paths. Потоки полезны, когда сложные приложения имеют много задач, которые могут выполняться одновременно.Threads are useful when complex applications have many tasks that can be performed at the same time.

Когда операционная система выполняет экземпляр приложения, она создает модуль, называемый процессом, для управления экземпляром.When an operating system executes an instance of an application, it creates a unit called a process to manage the instance. Процесс имеет поток выполнения.The process has a thread of execution. Это ряд программных команд, выполненных кодом приложения.This is the series of programming instructions performed by the application code. Например, если простое приложение содержит один набор инструкций, которые можно выполнить последовательно, этот набор инструкций обрабатывается как одна задача и существует только один путь выполнения (или поток) приложения.For example, if a simple application has a single set of instructions that can be performed serially, that set of instructions is handled as a single task, and there is just one execution path (or thread) through the application. Более сложные приложения могут иметь несколько задач, которые могут выполняться одновременно, а не последовательно.More complex applications may have several tasks that can be performed concurrently instead of serially. Для этого приложение может запустить для каждой задачи отдельные процессы, которые являются ресурсоемкими, или запустить отдельные потоки, которые являются относительно менее ресурсоемкими.An application can do this by starting separate processes for each task, which is a resource-intensive operation, or start separate threads, which are relatively less resource-intensive. Кроме этого, каждый поток можно запланировать для выполнения независимо от других потоков, связанных с процессом.Additionally, each thread can be scheduled for execution independently from the other threads associated with a process.

Потоки позволяют сложным приложениям более эффективно использовать ЦП, даже на компьютерах с одним ЦП.Threads allow complex applications to make more effective use of a processor (CPU), even on computers that have a single CPU. С одним ЦП только один поток может выполняться одновременно.With one CPU, only one thread can execute at a time. Если один поток выполняет длительную операцию, которая не использует ЦП, например считывание с диска или запись на диск, другой поток может выполняться, пока первая операция не завершится.If one thread executes a long-running operation that does not use the CPU, such as a disk read or write, another one of the threads can execute until the first operation is completed. Возможность выполнять потоки, в то время как другие потоки ожидают завершения операции, позволяет приложению увеличить использование ЦП.By being able to execute threads while other threads are waiting for an operation to be completed, an application can maximize its use of the CPU. Это особенно касается многопользовательских приложений, интенсивно использующих операции дискового ввода-вывода, например сервера базы данных.This is especially true for multi-user, disk I/O intensive applications such as a database server. Компьютеры с несколькими ЦП могут одновременно выполнять один поток для каждого ЦП.Computers that have multiple CPUs can execute one thread per CPU at the same time. Например, если компьютер имеет восемь ЦП, он может выполнять одновременно восемь потоков.For example, if a computer has eight CPUs, it can execute eight threads at the same time.

Планирование задач SQL ServerSQL Server task scheduling

В области SQL ServerSQL Server запрос является логическим представлением запроса или пакета.In the scope of SQL ServerSQL Server, a request is the logical representation of a query or batch. Запрос также представляет операции, необходимые системным потокам, таким как контрольная точка или модуль записи журнала.A request also represents operations required by system threads, such as checkpoint or log writer. Запросы находятся в различных состояниях в течение всего времени существования и могут накапливать время ожидания, когда ресурсы, необходимые для выполнения запроса, недоступны, например присутствуют блокировки или кратковременные блокировки.Requests exist in various states throughout their lifetime and can accumulate waits when resources required to execute the request are not available, such as locks or latches. Дополнительные сведения о состояниях запросов см. в статье sys.dm_exec_requests (Transact-SQL).For more information about request states, see sys.dm_exec_requests.

Задача представляет единицу работы, которую необходимо завершить для выполнения запроса.A task represents the unit of work that needs to be completed to fulfill the request. Одному запросу можно назначить одну или несколько задач.One or more tasks can be assigned to a single request. Параллельные запросы будут иметь несколько активных задач, которые выполняются параллельно, а не последовательно.Parallel requests will have several active tasks that are executed concurrently instead of serially. Запрос, задачи которого выполняются последовательно, будет иметь только одну активную задачу в определенный момент времени.A request that executes serially will only have one active task at any given point in time. Задачи находятся в различных состояниях в течение всего времени существования.Tasks exist in various states throughout their lifetime. Дополнительные сведения о состояниях задач см. в статье sys.dm_os_tasks (Transact-SQL).For more information about task states, see sys.dm_os_tasks. Задачи в приостановленном состоянии ожидают ресурсов, необходимых для выполнения задачи. До того времени они недоступны.Tasks in SUSPENDED state are waiting on resources required to execute the task to become available. Дополнительные сведения о состоянии ожидания задачи см. в статье sys.dm_os_waiting_tasks (Transact-SQL).For more information about waiting task, see sys.dm_os_waiting_tasks.

SQL ServerSQL Server Рабочий поток, также известный как рабочая роль или поток, является логическим представлением потока операционной системы.A SQL ServerSQL Server worker thread, also known as worker or thread, is a logical representation of an operating system thread. При выполнении последовательных запросов Компонент SQL Server Database EngineSQL Server Database Engine порождает рабочую роль для выполнения активной задачи.When executing serial requests, the Компонент SQL Server Database EngineSQL Server Database Engine will spawn a worker to execute the active task. При выполнении параллельных запросов в построчном режиме Компонент SQL Server Database EngineSQL Server Database Engine назначает рабочую роль для координации дочерних рабочих ролей, ответственных за выполнение назначенных им задач.When executing parallel requests in row mode, the Компонент SQL Server Database EngineSQL Server Database Engine assigns a worker to coordinate the child workers responsible for completing tasks assigned to them. Количество рабочих потоков, порожденных для каждой задачи, зависит от следующих факторов:The number of worker threads spawned for each task depends on:

  • Имеет ли запрос право на параллелизм, что определяется оптимизатором запросов.Whether the request was eligible for parallelism as determined by the Query Optimizer.
  • Какова действительная доступная степень параллелизма (DOP) в системе на основе текущей нагрузки.What is the actual available degree of parallelism (DOP) in the system based on current load. Это значение может отличаться от предполагаемого DOP, основанного на конфигурации сервера для максимальной степени параллелизма (MAXDOP).This may differ from estimated DOP which is based on the server configuration for max degree of parallelism (MAXDOP). Например, конфигурация сервера для MAXDOP может составлять 8, но доступное значение DOP в среде выполнения может составлять только 2, что влияет на производительность запросов.For example, the server configuration for MAXDOP may be 8 but the available DOP at runtime can be only 2, which affects query performance.

Примечание

Ограничение параметра max degree of parallelism (MAXDOP) задается для каждой задачи, а не для каждого запроса.The max degree of parallelism (MAXDOP) limit is set per task, not per request. Это означает, что при выполнении параллельных запросов один запрос может порождать несколько задач, а каждая задача может использовать несколько рабочих ролей до достижения ограничения MAXDOP.This means that during a parallel query execution, a single request can spawn multiple tasks, and each task can use multiple workers up to the MAXDOP limit. Дополнительные сведения о MAXDOP см. в статье Настройка параметра конфигурации сервера max degree of parallelism.For more information about MAXDOP, see Configure the max degree of parallelism Server Configuration Option.

Планировщик, также известный как планировщик SOS, управляет рабочими потоками, требующими времени обработки для выполнения работы от имени задач.A scheduler, also known as SOS scheduler, manages worker threads that require processing time to carry out work on behalf of tasks. Каждый планировщик сопоставляется с отдельным процессором (ЦП).Each scheduler is mapped to an individual processor (CPU). Время, в течение которого рабочая роль может оставаться активной в планировщике, называется квантом времени операционной системы (не более 4 мс).The time a worker can remain active in a scheduler is called the OS quantum, with a maximum of 4 ms. По истечении кванта времени рабочая роль передает время другим рабочим ролям, которым требуется доступ к ресурсам ЦП, и изменяет свое состояние.After its quantum time expires, a worker yields its time to other workers that need to access CPU resources, and changes its state. Это сотрудничество между рабочими ролями для повышения уровня доступа к ресурсам ЦП называется совместное планирование, также известное как планирование в режиме без вытеснения.This cooperation between workers to maximize access to CPU resources is called cooperative scheduling, also known as non-preemptive scheduling. В свою очередь, изменение состояния рабочей роли распространяется на задачу, связанную с этой рабочей ролью, и на запрос, связанный с задачей.In turn, the change in worker state is propagated to the task associated with that worker, and to the request associated with the task. Дополнительные сведения о состояниях рабочих ролей см. в статье sys.dm_os_workers (Transact-SQL).For more information about worker states, see sys.dm_os_workers. Дополнительные сведения о планировщиках см. в статье sys.dm_os_schedulers (Transact-SQL).For more information about schedulers, see sys.dm_os_schedulers .

Распределение потоков ЦПAllocating threads to a CPU

По умолчанию каждый экземпляр SQL ServerSQL Server запускает один поток. Операционная система распределяет потоки экземпляров SQL ServerSQL Server поровну между ЦП компьютера в зависимости от загрузки.By default, each instance of SQL ServerSQL Server starts each thread, and the operating system distributes threads from instances of SQL ServerSQL Server among the processors (CPUs) on a computer, based on load. Если сходство процессов включено на уровне операционной системы, операционная система назначает каждый поток конкретному ЦП.If process affinity has been enabled at the operating system level, then the operating system assigns each thread to a specific CPU. Компонент Компонент SQL Server Database EngineSQL Server Database Engine, в свою очередь, назначает рабочие потоки SQL ServerSQL Server планировщикам, которые распределяют потоки в равной мере между ЦП.In contrast, the Компонент SQL Server Database EngineSQL Server Database Engine assigns SQL ServerSQL Server worker threads to schedulers that distribute the threads evenly among the CPUs.

Для обеспечения многозадачности, например, когда несколько приложений используют один и тот же набор ЦП, операционная система иногда распределяет рабочие потоки между разными ЦП.To carry out multitasking, for example when multiple applications access the same set of CPUs, the operating system sometimes moves worker threads among different CPUs. Безусловно, такая организация работы эффективна с точки зрения операционной системы, но может привести к снижению производительности SQL ServerSQL Server при больших нагрузках системы, поскольку в кэше каждого процессора неоднократно перезагружаются данные.Although efficient from an operating system point of view, this activity can reduce SQL ServerSQL Server performance under heavy system loads, as each processor cache is repeatedly reloaded with data. В этих условиях назначение ЦП определенных потоков может повысить производительность, устраняя повторную загрузку процессоров и уменьшая количество переносов потоков между ЦП (а значит, уменьшая число переключений контекста). Такая связь между потоком и процессором называется соответствием процессоров.Assigning CPUs to specific threads can improve performance under these conditions by eliminating processor reloads and reducing thread migration across CPUs (thereby reducing context switching); such an association between a thread and a processor is called processor affinity. Если функция подобия была включена, операционная система назначает поток конкретному ЦП.If affinity has been enabled, the operating system assigns each thread to a specific CPU.

Параметр affinity mask задается с помощью инструкции ALTER SERVER CONFIGURATION.The affinity mask option is set by using ALTER SERVER CONFIGURATION. Если параметр affinity mask не задан, экземпляр SQL ServerSQL Server распределяет рабочие потоки равномерно между планировщиками, которые не были исключены.When the affinity mask is not set, the instance of SQL ServerSQL Server allocates worker threads evenly among the schedulers that have not been masked off.

Внимание!

Не используйте маску сходства процессоров в операционной системе и маску сходства в SQL ServerSQL Serverодновременно.Do not configure CPU affinity in the operating system and also configure the affinity mask in SQL ServerSQL Server. Эти настройки предназначены для достижения одного результата, и если их значения будут несогласованными, результат может быть непредсказуем.These settings are attempting to achieve the same result, and if the configurations are inconsistent, you may have unpredictable results. Дополнительные сведения см. в разделе Параметр affinity mask.For more information, see affinity mask option.

Пул потоков помогает оптимизировать производительность при подключении к серверу большого числа пользователей.Thread pooling helps optimize performance when large numbers of clients are connected to the server. Обычно для каждого запроса в операционной системе создается отдельный поток.Usually, a separate operating system thread is created for each query request. Однако в случае сотен соединений с сервером, использование одного потока на каждый запрос приводит к потреблению большого числа системных ресурсов.However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. Параметр max worker threads позволяет SQL ServerSQL Server создавать пул рабочих потоков, чтобы обслужить большое число запросов, что улучшает производительность.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.

параметр «использование упрощенных пулов»Using the lightweight pooling Option

Нагрузка, возникающая при контекстном переключении потоков, может быть не очень высока.The overhead involved in switching thread contexts may not be very large. Для большинства экземпляров SQL ServerSQL Server установка параметра "использование упрощенных пулов" в значение 0 или 1 не вызовет заметного изменения производительности.Most instances of SQL ServerSQL Server will not see any performance differences between setting the lightweight pooling option to 0 or 1. Выиграть от установки параметра использование упрощенных пулов могут только те экземпляры SQL ServerSQL Server, которые выполняются там, где:The only instances of SQL ServerSQL Server that might benefit from lightweight pooling are those that run on a computer having the following characteristics:

  • установлен производительный многопроцессорный сервер;A large multi-CPU server
  • все процессоры работают почти на пределе производительности;All the CPUs are running near maximum capacity
  • высок уровень переключения контекста.There is a high level of context switching

В таких системах может наблюдаться небольшое повышение эффективности, если для параметра "Использование упрощенных пулов" установлено значение 1.These systems may see a small increase in performance if the lightweight pooling value is set to 1.

Важно!

Не используйте планирование в режиме волокон для выполнения распространенных операций.Do not use fiber mode scheduling for routine operation. Это может привести к снижению производительности, мешая нормальной работе переключения контекста. Кроме того, некоторые компоненты SQL ServerSQL Server не могут работать правильно в режиме волокон.This can decrease performance by inhibiting the regular benefits of context switching, and because some components of SQL ServerSQL Server cannot function correctly in fiber mode. Дополнительные сведения см. в разделе об использовании упрощенных пулов.For more information, see lightweight pooling.

Выполнение потоков и волоконThread and Fiber Execution

В Microsoft Windows используется числовая система приоритетов, распределяющая выполняемые потоки по уровням от 1 до 31.Microsoft Windows uses a numeric priority system that ranges from 1 through 31 to schedule threads for execution. Значение 0 зарезервировано для использования операционной системой.Zero is reserved for operating system use. При наличии в очереди на выполнение нескольких потоков Windows сначала обслуживает поток с наивысшим приоритетом.When several threads are waiting to execute, Windows dispatches the thread with the highest priority.

Каждый экземпляр SQL ServerSQL Server по умолчанию имеет уровень приоритета 7, что соответствует стандартному уровню.By default, each instance of SQL ServerSQL Server is a priority of 7, which is referred to as the normal priority. Это значение по умолчанию задает потокам SQL ServerSQL Server достаточно высокий уровень приоритета, позволяющий им получать достаточно ресурсов ЦП, не снижая производительности других приложений.This default gives SQL ServerSQL Server threads a high enough priority to obtain sufficient CPU resources without adversely affecting other applications.

Параметр конфигурации priority boost используется для повышения приоритета потоков экземпляра SQL ServerSQL Server до уровня 13.The priority boost configuration option can be used to increase the priority of the threads from an instance of SQL ServerSQL Server to 13. Это наивысший приоритет.This is referred to as high priority. Этот параметр назначает потокам SQL ServerSQL Server более высокий приоритет по отношению к другим приложениям.This setting gives SQL ServerSQL Server threads a higher priority than most other applications. При этом потоки SQL ServerSQL Server всегда будут обслуживаться в первую очередь, а потоки других приложений не смогут занимать ресурсы системы ранее потоков с более высоким приоритетом.Thus, SQL ServerSQL Server threads will generally be dispatched whenever they are ready to run and will not be pre-empted by threads from other applications. Представленные выше меры могут повысить производительность сервера, на котором выполняются только экземпляры SQL ServerSQL Server.This can improve performance when a server is running only instances of SQL ServerSQL Server and no other applications. Однако если в приложении SQL ServerSQL Server выполняется ресурсоемкая операция, то не рекомендуется присваивать высокий приоритет другим приложениям, так как это может привести к загрузке ресурсов, необходимых для обслуживания потока SQL ServerSQL Server.However, if a memory-intensive operation occurs in SQL ServerSQL Server, however, other applications are not likely to have a high-enough priority to pre-empt the SQL ServerSQL Server thread.

Если на компьютере выполняется несколько экземпляров SQL ServerSQL Server, то повышение приоритетов одних может привести к снижению производительности других.If you are running multiple instances of SQL ServerSQL Server on a computer, and turn on priority boost for only some of the instances, the performance of any instances running at normal priority can be adversely affected. Кроме того, включение параметра priority boost может привести к простою других приложений и компонентов, выполняемых на компьютере.Also, the performance of other applications and components on the server can decline if priority boost is turned on. Таким образом, данный параметр рекомендуется использовать только в строго определенных условиях.Therefore, it should only be used under tightly controlled conditions.

ЦП с поддержкой горячей заменыHot add CPU

ЦП с поддержкой горячей замены — это возможность динамически добавлять центральные процессоры в запущенную систему.Hot add CPU is the ability to dynamically add CPUs to a running system. Добавление центральных процессоров может осуществляться физически — путем добавления нового оборудования, логически — путем аппаратного секционирования в сети, виртуально — через уровень виртуализации.Adding CPUs can occur physically by adding new hardware, logically by online hardware partitioning, or virtually through a virtualization layer. Начиная с SQL Server 2008SQL Server 2008, SQL ServerSQL Server поддерживает ЦП с поддержкой горячей замены.Starting with SQL Server 2008SQL Server 2008, SQL ServerSQL Server supports hot add CPU.

Требования для ЦП с поддержкой горячей замены:Requirements for hot add CPU:

  • оборудование с поддержкой ЦП с поддержкой горячей замены;Requires hardware that supports hot add CPU.
  • 64-разрядный выпуск Windows Server 2008 Datacenter или Windows Server 2008 Enterprise Edition для операционных систем на платформе Itanium;Requires the 64-bit edition of Windows Server 2008 Datacenter or the Windows Server 2008 Enterprise Edition for Itanium-Based Systems operating system.
  • SQL ServerSQL Server Enterprise.Requires SQL ServerSQL Server Enterprise.
  • SQL ServerSQL Server не может быть настроен на использование программной архитектуры NUMA.cannot be configured to use soft NUMA. Дополнительные сведения о программной архитектуре NUMA см. в разделе Архитектура Soft-NUMA (SQL Server).For more information about soft NUMA, see Soft-NUMA (SQL Server).

После добавления центральных процессоров SQL ServerSQL Server не начинает автоматически использовать их.SQL ServerSQL Server does not automatically start to use CPUs after they are added. Это предотвращает использование SQL ServerSQL Server центральных процессоров, добавленных для каких-либо других целей.This prevents SQL ServerSQL Server from using CPUs that might be added for some other purpose. После добавления ЦП выполните инструкцию RECONFIGURE, что позволит SQL ServerSQL Server распознать новые ЦП в качестве доступных ресурсов.After adding CPUs, execute the RECONFIGURE statement, so that SQL ServerSQL Server will recognize the new CPUs as available resources.

Примечание

Для использования новых ЦП необходимо изменить настройки параметра affinity64 mask .If the affinity64 mask is configured, the affinity64 mask must be modified to use the new CPUs.

Рекомендации по использованию SQL Server на компьютерах, которые имеют более 64 процессоровBest Practices for running SQL Server on computers that have more than 64 CPUs

Назначение аппаратных потоков процессорамAssigning Hardware Threads with CPUs

Не используйте параметры конфигурации сервера affinity mask и affinity64 mask для привязки процессоров к определенным потокам.Do not use the affinity mask and affinity64 mask server configuration options to bind processors to specific threads. Эти параметры ограничены 64 процессорами.These options are limited to 64 CPUs. Вместо этого следует использовать параметр SET PROCESS AFFINITY инструкции ALTER SERVER CONFIGURATION.Use the SET PROCESS AFFINITY option of ALTER SERVER CONFIGURATION instead.

Управление размером файла журнала транзакцийManaging the Transaction Log file size

Не следует полагаться на функцию автоувеличения для увеличения размера файла журнала транзакций.Do not rely on autogrow to increase the size of the transaction log file. Увеличение журнала транзакций должно происходить последовательно.Increasing the transaction log must be a serial process. Увеличение журнала может помешать выполнению операций записи транзакций до тех пор, пока увеличение журнала не будет завершено.Extending the log can prevent transaction write operations from proceeding until the log extension is finished. Вместо этого заранее выделите место для файлов журнала, установив размер файла в значение, достаточное для поддержки обычной рабочей нагрузки в среде.Instead, preallocate space for the log files by setting the file size to a value large enough to support the typical workload in the environment.

Установка максимальной степени параллелизма для операций с индексамиSetting Max Degree of Parallelism for index operations

На компьютерах, имеющих несколько процессоров, с помощью временного изменения модели восстановления базы данных на модель восстановления с неполным протоколированием или простую модель восстановления можно улучшить производительность операций с индексами, таких как создание или перестроение индексов.The performance of index operations such as creating or rebuilding indexes can be improved on computers that have many CPUs by temporarily setting the recovery model of the database to either the bulk-logged or simple recovery model. Операции с индексами могут создавать значительную нагрузку на журнал, и конфликт журнала может повлиять на выбранную SQL ServerSQL Server наилучшую степень параллелизма.These index operations can generate significant log activity and log contention can affect the best degree of parallelism (DOP) choice made by SQL ServerSQL Server.

Помимо настройки параметра конфигурации сервера max degree of parallelism (MAXDOP) , рассмотрите возможность настройки параллелизма для операций с индексами с помощью параметра MAXDOP.In addition to adjusting the max degree of parallelism (MAXDOP) server configuration option, consider adjusting the parallelism for index operations using the MAXDOP option. Дополнительные сведения см. в статье Настройка параллельных операций с индексами.For more information, see Configure Parallel Index Operations. Дополнительные сведения и рекомендации по настройке параметра конфигурации сервера max degree of parallelism см. в статье Настройка параметра конфигурации сервера max degree of parallelism.For more information and guidelines about adjusting the max degree of parallelism server configuration option, see Configure the max degree of parallelism Server Configuration Option.

Задание максимального числа рабочих потоковSetting the Maximum Number of Worker Threads

SQL ServerSQL Server динамически настраивает параметр конфигурации сервера max worker threads при запуске.will dynamically configure the max worker threads server configuration option at startup. SQL ServerSQL Server использует количество доступных ЦП и архитектуру системы для определения конфигурации сервера во время запуска с помощью документированной формулы.uses the number of available CPUs and the system architecture to determine this server configuration during startup, using a documented formula.

Это расширенный параметр, и изменять его следует только опытным администраторам баз данных или сертифицированным по SQL Server специалистам.This option is an advanced option and should be changed only by an experienced database administrator or certified SQL Server professional. Если вы считаете, что есть проблема с производительностью, вероятно, причина не в доступности рабочих потоков.If you suspect that there is a performance problem, it is probably not the availability of worker threads. Скорее всего, их ожидание вызвано чем-то наподобие операций ввода-вывода.The cause is more likely something like I/O that is causing the worker threads to wait. Рекомендуется найти причину проблемы производительности, прежде чем изменять параметр max worker threads.It is best to find the root cause of a performance issue before you change the max worker threads setting. Тем не менее, если необходимо вручную задать максимальное число рабочих потоков, это значение конфигурации всегда должно быть в семь раз больше числа ЦП, имеющихся в системе.However, if you need to manually set the maximum number of worker threads, this configuration value must always be set to a value of at least seven times the number of CPUs that are present on the system. Дополнительные сведения см. в статье Настройка параметра max worker threads.For more information, see Configure the max worker threads.

Использование приложения SQL Trace и SQL Server ProfilerUsing SQL Trace and SQL Server Profiler

В рабочей среде использовать трассировку SQL и SQL Profiler не рекомендуется.We recommend that you do not use SQL Trace and SQL Profiler in a production environment. Издержки использования этих средств также увеличиваются по мере увеличения числа ЦП.The overhead for running these tools also increases as the number of CPUs increases. Если в рабочей среде необходимо использовать приложение трассировки SQL, следует ограничить до минимума число отслеживаемых событий.If you must use SQL Trace in a production environment, limit the number of trace events to a minimum. Следует внимательно тестировать каждое событие трассировки под нагрузкой и избегать сочетания событий, которые могут значительно повлиять на производительность.Carefully profile and test each trace event under load, and avoid using combinations of events that significantly affect performance.

Важно!

Трассировка SQL и Приложение SQL Server ProfilerSQL Server Profiler являются устаревшими.SQL Trace and Приложение SQL Server ProfilerSQL Server Profiler are deprecated. Пространство имен Microsoft.SqlServer.Management.Trace, которое содержит объекты трассировки Microsoft SQL Server и Replay, также устаревшее.The Microsoft.SqlServer.Management.Trace namespace that contains the Microsoft SQL Server Trace and Replay objects are also deprecated.

Этот компонент находится в режиме обслуживания и может быть удален в будущей версии Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Вместо этого используйте расширенные события.Use Extended Events instead. Дополнительные сведения о расширенных событиях см. в разделе Быстрое начало. Расширенные события в SQL Server и SSMS XEvent Profiler.For more information on Extended Events, see Quick Start: Extended events in SQL Server and SSMS XEvent Profiler.

Примечание

Приложение SQL Server ProfilerSQL Server Profiler для рабочей нагрузки служб Analysis Services не устарел и будет по-прежнему поддерживаться.for Analysis Services workloads is NOT deprecated, and will continue to be supported.

Установка количества файлов данных базы данных tempdbSetting the number of TempDB data files

Количество файлов зависит от числа (логических) процессоров на компьютере.The number of files depends on the number of (logical) processors on the machine. Как правило, если число логических процессоров меньше или равно восьми, используйте равное ему число файлов данных.As a general rule, if the number of logical processors is less than or equal to eight, use the same number of data files as logical processors. Если число логических процессоров больше восьми, используйте восемь файлов данных, а затем, если состязание сохраняется, увеличивайте число файлов данных на значение, кратное 4, пока состязание не уменьшится до приемлемого уровня, или внесите изменения в рабочую нагрузку или код.If the number of logical processors is greater than eight, use eight data files and then if contention continues, increase the number of data files by multiples of 4 until the contention is reduced to acceptable levels or make changes to the workload/code. Кроме того, помните о других рекомендациях для tempdb, доступных в разделе Оптимизация производительности базы данных tempdb в SQL Server.Also keep in mind other recommendations for TempDB, available in Optimizing TempDB performance in SQL Server.

Однако можно уменьшить ресурсы, используемые для управления базой данных, внимательно изучив параллелизм базы данных tempdb.However, by carefully considering the concurrency needs of tempdb, you can reduce database management overhead. Например, если в системе используется 64 ЦП, при этом только 32 запроса используют tempdb, увеличение числа файлов tempdb до 64 не приведет к улучшению производительности.For example, if a system has 64 CPUs and usually only 32 queries use tempdb, increasing the number of tempdb files to 64 will not improve performance.

Компоненты SQL Server, которые поддерживают более 64 ЦПSQL Server components that can use more than 64 CPUs

В приведенной ниже таблице перечисляются компоненты SQL ServerSQL Server и указывается, поддерживают ли они более 64 процессоров.The following table lists SQL ServerSQL Server components and indicates whether they can use more that 64 CPUs.

Имя процессаProcess name Исполняемая программаExecutable program Использование более 64 процессоровUse more than 64 CPUs
Компонент SQL Server Database EngineSQL Server Database Engine Sqlserver.exeSqlserver.exe ДаYes
Службы Reporting ServicesReporting Services Rs.exeRs.exe нетNo
Службы Analysis ServicesAnalysis Services As.exeAs.exe нетNo
Службы Integration ServicesIntegration Services Is.exeIs.exe нетNo
Компонент Service BrokerService Broker Sb.exeSb.exe нетNo
Компонент Full-text SearchFull-Text Search Fts.exeFts.exe нетNo
Агент SQL ServerSQL Server Agent Sqlagent.exeSqlagent.exe нетNo
SQL Server Management StudioSQL Server Management Studio Ssms.exeSsms.exe нетNo
программа установки SQL ServerSQL Server Setup Setup.exeSetup.exe нетNo