сканирование: запущено в трассировке профилировщика SQL Server генерирует неправильный indexid - PullRequest
0 голосов
/ 05 марта 2012

Я запускаю трассировку с помощью SQL Server Profiler (2008) для захвата сканирования таблиц / индексов, поскольку мне нужно только знать, если у нас есть сканирование больших таблиц, я уменьшил количество добавленных столбцов до EventClass (scan: start) / остановлено), dbname, objectid, время начала, spid и indexid.

В захваченном результате есть 2 проблемы, одна из которых состоит в том, что некоторые идентификаторы объекта являются нулевыми (то есть не существуют в рассматриваемой базе данных / в базе данных, по которой я фильтровал), а вторая проблема заключается в том, что некоторые идентификаторы индекса неверны, например в некоторых таблицах есть только один кластеризованный индекс, а indexid, предоставляемый трассировкой, задается как 8, а в другой - 122, хотя таблица имеет менее 20 индексов.

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

Заранее спасибо за любые советы,

Naman

1 Ответ

0 голосов
/ 05 марта 2012

Если все, что вы пытаетесь сделать, это определить, происходит ли сканирование (в отличие от идентификации вызывающих их запросов), а не использовать трассировку, вы можете получить лучшие результаты, глядя на систему DMV sys.dm_db_index_operational_stats.Сканирование таблиц не разбивается полностью независимо, но отображается в столбце range_scan_count.

Также см. user_scans в sys.dm_db_index_usage_stats

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...