Sql server: збереження результатів з sys.dm_db_index_usage_stats

SQL Server: збереження результатів з sys.dm_db_index_usage_stats
Це одне з тих динамічних адміністративних уявлень, які я зазвичай зберігаю в фізичних таблицях, коли доводиться мати справу з середовищем з періодичними циклами активності, відмінними від повсякденних дій. У таких випадках корисно час від часу створювати статистику використання у фізичній таблиці за допомогою простої команди SELECT INTO з міткою дати. Я рекомендую задіяти необроблені дані з sys.dm_db_index_usage_stats, а не будь-які інші варіанти, перераховані в цій статті, тому що ви будете змінювати базовий запит відповідно до конкретних вимог до налаштувань (як буде показано в другій частині).

структура sys.dm_dbjndex_usage_stats

Результати з sys.dm_db_index_ usage_stats поділяються наступним чином:
• призначена для користувача або системна активність;
• операції читання або запису. Операції читання діляться на різні типи, доступні для індексації: пошуки (seek), перегляди (scan) і уточнюючі запити (lookup). Операції запису представлені для індексації як оновлення. Як бачите, тут немає нічого складного - простіше тільки купити новий мотоцикл на Motoshop (https://motoshop.ua/).

Крім того, ви отримуєте інформацію про активність: коли виконувалася остання операція читання або запису. Зазвичай я не звертаю уваги на стовпці дати, якщо тільки не виявляю індекс з дуже низьким використанням операцій читання або запису, коли потрібно оцінити, наскільки він «зачерствів». Ці стовпці можуть вказувати на періодичну природу індексу, як зазначалося вище.

SQL Server: збереження результатів з sys.dm_db_index_usage_stats

Transact-SQL для виклику sys.dm_dbjndex_usage_stats

Відео: Datazen: Яскраві звіти для MS Project Server


Перший крок до оптимізації нашого запиту за допомогою sys.dm_db_ index_usage_stats - перевірити початковий запит і які повертаються їм дані в формі стовпців, що ідентифікують індивідуальні індекси.
SELECT * FROM sys.dm_db_index_usage_stats- 

SQL Server: збереження результатів з sys.dm_db_index_usage_stats
Початковий запит

Результат показаний на скріншоті вище.

Якщо залишити це динамічне адміністративне уявлення без фільтрації, будуть повернуті всі індекси для екземпляра. Ймовірно, ви побажаєте звузити поле аналізу продуктивності, а також ідентифікувати базу даних, індекс і об`єкти по імені. Це легко досягається шляхом з`єднання двох системних уявлень:
• sys.objects;
• sys. indexes.

Відео: Simple file manager for Dropbox in C #


Додатково використовується системна функція DB NAME () для перетворення стовпчика database_id в распознаваемое ім`я, а системна функція DB ID () - для зворотної операції перетворення імені бази даних до відповідного database_id. Крім того, я застосовую фільтрацію з використанням предиката пошуку по database id. Адже лише зрідка потрібно аналізувати використання індексу на всіх базах даних примірника. Для цілей цього примірника я замінив на тестову базу даних, що іменується lifeboat (див. Код нижче).







SELECT DB_NAME (ixUS.database_id) AS database__name, SO.name AS object__name, SI.name AS index__name, ixUS. * FROM sys.dm_db_index_usage_stats AS ixUSINNER JOIN lifeboat.sys.objects AS SOON SO.object_id = ixUS.object_idINNER JOIN lifeboat.sys .indexes AS SION SI.object_id = ixUS.object_idAND SI.index_id = ixUS.index_idWHERE ixUS.database_id = DB_ID ( ``) ORDER BY OBJECT_NAME (ixUS.object_id), ixUS.index_id-

Використання предиката пошуку по database_id

SQL Server: збереження результатів з sys.dm_db_index_usage_stats
Результати виконання коду, представленого вище

Зверніть увагу на деякі особливості декількох перших шпальт при виконанні цього програмного коду t-sql (див. Скріншот вище). Ми обмежили діапазон однією базою даних через предикат пошуку ixUS.database id і повне визначення об`єктів для sys.objects і sys.indexes. Крім того, тепер у нас є розпізнаються імена для цих об`єктів. У тексті запиту ви побачите, що я твердо дотримуюся повністю певних імен. Абсолютно необхідно використовувати повністю певні імена, інакше ви отримаєте недійсні результати, оскільки objectid і index_id не унікальні в екземплярі, тільки в базі даних.




ІНШЕ

» » Sql server: збереження результатів з sys.dm_db_index_usage_stats