Published on

February 10, 2020

Выявление узких мест в памяти в SQL Server

Вы часто сталкиваетесь с замедлениями в вашей базе данных MS SQL Server? Если да, то, возможно, пришло время исследовать узкие места в памяти. Проблемы с производительностью, связанные с памятью, могут быть вызваны различными факторами, включая ограничения в виртуальной или физической памяти, давление на память от других приложений или проблемы в самом SQL Server. К счастью, существует несколько встроенных инструментов, которые могут помочь вам выявить причину этих узких мест в памяти.

Монитор производительности

Один из первых инструментов, которыми вы можете воспользоваться, это Монитор производительности, который является частью Консоли управления Microsoft. Анализируя различные счетчики производительности, вы можете получить ценную информацию о использовании памяти в вашем экземпляре SQL Server.

Начните с мониторинга счетчика производительности “Память: доступно [М, К] байт”. Низкое количество доступной памяти может указывать на внешнее давление на память. Как правило, рекомендуется исследовать этот счетчик, когда значение падает ниже 5% от всей доступной памяти.

Вы также можете использовать счетчик производительности “Процесс: рабочий набор” для идентификации основных потребителей памяти в системе. Путем суммирования различных счетчиков, таких как “Процесс: рабочий набор” и “Память: предельное значение коммита”, вы можете оценить общее использование физической памяти.

Важно отметить, что эти счетчики производительности не учитывают механизмы AWE (Address Windowing Extensions). Если AWE включен, вам потребуется изучить распределение памяти внутри SQL Server с помощью команды DBCC MEMORYSTATUS или представлений динамического управления.

DBCC MEMORYSTATUS

Команда DBCC MEMORYSTATUS позволяет проверить наличие аномального распределения буферов памяти внутри SQL Server. Запустив эту команду и изучив раздел Буферный пул, вы можете искать значение “Цель”, которое показывает количество 8-КБ страниц, которые могут быть зафиксированы без вызова страничного обмена. Снижение количества целевых страниц может указывать на реакцию на внешнее физическое давление на память.

Если значение Цели низкое, но значение Процесс: Частные байты сервера высокое, возможно, у вас возникли внутренние проблемы с памятью SQL с компонентами, которые используют память извне буферного пула. В этом случае рекомендуется исследовать связанные серверы, COM-объекты, расширенные хранимые процедуры, SQL CLR и другие компоненты, которые могут потреблять избыточную память.

Кроме того, вы можете сравнить количество целевых страниц с максимальными значениями памяти сервера, чтобы убедиться, что потребление памяти буферного пула находится в указанных пределах.

Представления динамического управления

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

Например, представление sys.dm_os_memory_clerks позволяет получить информацию о памяти, выделенной через механизм AWE. Вы также можете проверить количество памяти, потребляемой извне буферного пула через многопоточный аллокатор.

Используя представления DMV, такие как sys.dm_os_memory_clerks и sys.dm_os_memory_cache_counters, вы можете определить компоненты, потребляющие больше всего памяти, и исследовать любые проблемы с давлением на память.

Resource Governor

Если вы используете SQL Server 2008 Enterprise Edition, вы можете воспользоваться функцией Resource Governor для настройки стратегий выделения памяти. Однако неправильные настройки могут привести к ошибкам нехватки памяти. Представления DMV sys.dm_resource_governor_configuration, sys.dm_resource_governor_resource_pools и sys.dm_resource_governor_workload_groups могут предоставить ценную информацию о функции Resource Governor.

Кольцевые буферы SQL Server

Представление DMV sys.dm_os_ring_buffers позволяет получить доступ к диагностической информации о памяти, записанной различными кольцевыми буферами. Эти кольцевые буферы фиксируют события, связанные с общим состоянием сервера, изменениями состояния памяти, условиями нехватки памяти, уведомлениями о памяти Resource Governor и сбоями буферного пула.

SQL Server Profiler

SQL Server Profiler – это инструмент, который можно использовать для отслеживания и анализа событий SQL Server. Создав трассировку, вы можете собрать информацию о событиях, связанных с памятью, и проанализировать их, чтобы выявить узкие места в памяти.

Просмотрщик файлов журналов в SQL Server Management Studio

Просмотрщик файлов журналов в SQL Server Management Studio позволяет проверить журнал ошибок SQL Server и журналы приложений и системы Windows в одном месте. Анализируя эти журналы, вы можете найти дополнительную информацию о проблемах, связанных с памятью.

Используя эти встроенные инструменты и техники, вы можете эффективно выявить узкие места в памяти в вашем экземп

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.