Published on

August 27, 2024

Изучение динамических представлений управления в SQL Server

Динамические представления управления (DMV) в Microsoft SQL Server предоставляют ценную информацию о производительности сервера, конфигурации и использовании ресурсов. Одно из наиболее полезных DMV – sys.dm_os_sys_info, которое предлагает информацию о процессоре, времени работы и настройках памяти. В этой статье мы рассмотрим различные способы использования этого DMV и как он развивался со временем.

Информация о процессоре

Одной из ключевых информаций, которую предоставляет sys.dm_os_sys_info, является количество физических процессоров и количество ядер для сервера, на котором работает экземпляр SQL. Это можно получить с помощью следующего запроса:

SELECT cpu_count AS virtual_cpu_count, cpu_count / hyperthread_ratio AS physical_cpu_count
FROM sys.dm_os_sys_info;

Кроме того, вы можете получить текущую загрузку процессора с помощью запроса, подобного тому, который предоставил Роберт Перл в своей статье на SQL Server Central. Этот запрос позволяет администраторам баз данных легко отслеживать использование процессора без необходимости удаленного подключения к серверу или открытия диспетчера задач.

Рабочие процессы и планировщики

Когда пользователь отправляет команду в SQL Server, она назначается сеансу и может быть разделена на одну или несколько задач, назначенных рабочим процессам (потокам), работающим на планировщиках SQL. Количество рабочих процессов контролируется пулом рабочих процессов, который определяется настройкой максимального количества рабочих потоков. Путем запроса sys.dm_os_sys_info вы можете получить информацию о настройках максимального количества рабочих процессов и сравнить их с фиксированными значениями, предоставленными Microsoft в документации.

SELECT cpu_count, [max_workers_count], [scheduler_count], [scheduler_total_count]
FROM sys.dm_os_sys_info;

Значения для scheduler_count и scheduler_total_count представляют собой количество планировщиков, доступных для обслуживания пользовательских потоков, и общее количество планировщиков для всех потоков SQL Server соответственно.

Информация о времени работы

Sys.dm_os_sys_info также предоставляет информацию о времени последней перезагрузки сервера. Вы можете определить время последней перезагрузки сервера с помощью следующего запроса:

SELECT [ms_ticks] AS ms_since_restart, [ms_ticks] / 1000 AS seconds_since_restart,
       CAST([ms_ticks] / 1000 / 60.0 AS DECIMAL(15, 2)) AS minutes_since_restart,
       CAST([ms_ticks] / 1000 / 60 / 60.0 AS DECIMAL(15, 2)) AS hours_since_restart,
       CAST([ms_ticks] / 1000 / 60 / 60 / 24.0 AS DECIMAL(15, 2)) AS days_since_restart,
       DATEADD(s, ((-1) * ([ms_ticks] / 1000)), GETDATE()) AS time_of_last_restart
FROM sys.dm_os_sys_info;

Вы также можете сравнить время перезагрузки сервера с временем запуска службы SQL Server, используя столбец sqlserver_start_time в sys.dm_os_sys_info. Однако важно отметить, что этот столбец доступен только в SQL Server 2008 и более поздних версиях.

Информация о памяти

Sys.dm_os_sys_info предоставляет информацию о использовании памяти, включая использование расширений окна адресации (AWE). AWE позволяет SQL Server выделять дополнительную оперативную память для буферного кэша при наличии ограничений издания. Вы можете определить, используется ли AWE в экземпляре SQL с помощью столбцов virtual_memory_in_bytes и bpool_visible.

SELECT [physical_memory_in_bytes] / 1024 / 1024 AS [physical_memory_mb],
       [virtual_memory_in_bytes] / 1024 / 1024 AS [virtual_memory_mb],
       [bpool_committed] * 8 / 1024 AS [bpool_committed_mb],
       [bpool_commit_target] * 8 / 1024 AS [bpool_commit_target_mb],
       [bpool_visible] * 8 / 1024 AS [bpool_visible_mb]
FROM sys.dm_os_sys_info;

Анализируя значения, возвращаемые этим запросом, вы можете определить, включен ли AWE и как это влияет на использование памяти буферного пула.

В целом, sys.dm_os_sys_info – это мощный DMV, который предоставляет ценную информацию о процессоре, времени работы и настройках памяти в SQL Server. Используя этот DMV, администраторы баз данных могут получить представление о производительности сервера и принимать обоснованные решения для оптимизации его конфигурации.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.