0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Dynamic Management Views</strong>- специализированные представления и довольно часто функции, которые существуют в MS SQL Server и значительно облегчают администрирование и мониторинг SQL Server. Зачем они разработчику: - если нужно автоматизировать административные задачи; - если мы автоматизируем сбор нестандартных метрик для мониторинга.</p>
1
<p><strong>Dynamic Management Views</strong>- специализированные представления и довольно часто функции, которые существуют в MS SQL Server и значительно облегчают администрирование и мониторинг SQL Server. Зачем они разработчику: - если нужно автоматизировать административные задачи; - если мы автоматизируем сбор нестандартных метрик для мониторинга.</p>
2
<p>Исторически сложилось, что сначала это были, в основном, представления, а уже потом добавились табличные функции, поэтому так и осталось название<strong>DMV</strong>.</p>
2
<p>Исторически сложилось, что сначала это были, в основном, представления, а уже потом добавились табличные функции, поэтому так и осталось название<strong>DMV</strong>.</p>
3
<h2>Итак, давайте знакомиться:</h2>
3
<h2>Итак, давайте знакомиться:</h2>
4
<p>1.<strong>Sys.dm_exec_cached_plans</strong>возвращает закэшированные планы запросов. Очень полезное представление, чтобы посмотреть, например, варианты планов, которые строятся на различные выборки. Также позволяет проверить, сколько места в памяти занимают планы и насколько они одинаковы для разных запросов.</p>
4
<p>1.<strong>Sys.dm_exec_cached_plans</strong>возвращает закэшированные планы запросов. Очень полезное представление, чтобы посмотреть, например, варианты планов, которые строятся на различные выборки. Также позволяет проверить, сколько места в памяти занимают планы и насколько они одинаковы для разных запросов.</p>
5
<p>2.<strong>Sys.dm_exec_query_stats</strong>показывает суммарную статистику выполнения по планам запросов. Именно используя это DMV, вы можете собрать статистику самых ресурсоёмких запросов на сервере и начать оптимизацию именно с них.</p>
5
<p>2.<strong>Sys.dm_exec_query_stats</strong>показывает суммарную статистику выполнения по планам запросов. Именно используя это DMV, вы можете собрать статистику самых ресурсоёмких запросов на сервере и начать оптимизацию именно с них.</p>
6
<p>3.<strong>Sys.dm_tran_locks</strong>хранит информацию о блокировках, которые в данный момент наложены на объекты в БД, покажет тип блокировки и заблокированный объект, а также уровень изоляции транзакции. При этом, если вы хотите собрать историю блокировок за какой-либо период, нужно будет вызывать периодически DMV и сохранять результаты, так как при снятии блокировки данные об этой блокировке перестанут отображаться.</p>
6
<p>3.<strong>Sys.dm_tran_locks</strong>хранит информацию о блокировках, которые в данный момент наложены на объекты в БД, покажет тип блокировки и заблокированный объект, а также уровень изоляции транзакции. При этом, если вы хотите собрать историю блокировок за какой-либо период, нужно будет вызывать периодически DMV и сохранять результаты, так как при снятии блокировки данные об этой блокировке перестанут отображаться.</p>
7
<p>4.<strong>Sys.dm_db_missing_index_</strong>. Набор DMV, который показывает, каких индексов не хватает в БД по мнению SQL Server. Осторожно, не стоит создавать все индексы из списка!<strong>Во-первых</strong>, SQL Server никак не анализирует уже существующие и, если на таблице есть индекс из 2-х полей [id, name], а сервер считает, что нужен индекс по [id, name, type], то он может только предложить создать новый, а не модифицировать существующий.<strong>Во-вторых</strong>, в предложения часто попадает длинный список<strong>INCLUDE</strong>полей, что далеко не всегда является хорошей практикой, так как предложенный индекс дублирует всю таблицу.</p>
7
<p>4.<strong>Sys.dm_db_missing_index_</strong>. Набор DMV, который показывает, каких индексов не хватает в БД по мнению SQL Server. Осторожно, не стоит создавать все индексы из списка!<strong>Во-первых</strong>, SQL Server никак не анализирует уже существующие и, если на таблице есть индекс из 2-х полей [id, name], а сервер считает, что нужен индекс по [id, name, type], то он может только предложить создать новый, а не модифицировать существующий.<strong>Во-вторых</strong>, в предложения часто попадает длинный список<strong>INCLUDE</strong>полей, что далеко не всегда является хорошей практикой, так как предложенный индекс дублирует всю таблицу.</p>
8
<p>5.<strong>Sys.dm_db_index_physical_stats</strong>покажет, сколько места занимают ваши индексы, а также уровень их фрагментации. Возможно, пора запустить процедуры обслуживания на некоторых индексах? Высокая фрагментация может быть причиной, по которой оптимизатор предпочтёт не использовать индекс, хотя по набору полей он может идеально подходить под запрос.</p>
8
<p>5.<strong>Sys.dm_db_index_physical_stats</strong>покажет, сколько места занимают ваши индексы, а также уровень их фрагментации. Возможно, пора запустить процедуры обслуживания на некоторых индексах? Высокая фрагментация может быть причиной, по которой оптимизатор предпочтёт не использовать индекс, хотя по набору полей он может идеально подходить под запрос.</p>
9
<p>6.<strong>Sys.dm_io_pending_io_requests</strong>- список запросов на данный момент, которые висят в состоянии ожидания системы ввода-вывода. Можно обратить внимание на тот же уровень фрагментации, а также на объём возвращаемых данных.</p>
9
<p>6.<strong>Sys.dm_io_pending_io_requests</strong>- список запросов на данный момент, которые висят в состоянии ожидания системы ввода-вывода. Можно обратить внимание на тот же уровень фрагментации, а также на объём возвращаемых данных.</p>
10
<p>7.<strong>Sys.dm_os_performance_counters</strong>отображает счётчики производительности SQL Server. Выборка покажет сведения о том, насколько эффективно работает кэш, как часто приходится вычитывать данные с диска и многое-многое другое.</p>
10
<p>7.<strong>Sys.dm_os_performance_counters</strong>отображает счётчики производительности SQL Server. Выборка покажет сведения о том, насколько эффективно работает кэш, как часто приходится вычитывать данные с диска и многое-многое другое.</p>
11
<p>Обзор DMV получился весьма кратким, но я надеюсь, что вы познакомитесь с заинтересовавшими вас представлениями, и они помогут глубже понять причины проблем с производительностью, а также вычислить неидеально написанные запросы.</p>
11
<p>Обзор DMV получился весьма кратким, но я надеюсь, что вы познакомитесь с заинтересовавшими вас представлениями, и они помогут глубже понять причины проблем с производительностью, а также вычислить неидеально написанные запросы.</p>
12
12