Три дуже швидкі кроки для початку роботи:
1)
USE DatabaseName
SELECT [TableName] = OBJECT_NAME(object_id),
last_user_update, last_user_seek, last_user_scan, last_user_lookup
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('DatabaseName')
Скаже вам, коли останній раз використовувався кожен індекс, включаючи кластерний індекс. Тож принаймні дайте вам смак, для якого таблиці отримують доступ (а які ні.)
2) Увімкніть розширений сеанс подій (або слід Profiler на стороні сервера, якщо ви працюєте до SQL 2012) протягом години або близько того, поки додаток використовується. Ви також можете попросити користувача виконати різні дії в додатку в певному порядку, щоб ви могли співвіднести це з слідом / сеансом.
Корисна пропозиція: якщо ви можете змінити рядок з'єднання, яку додаток взагалі використовує, додайте "; ім'я програми = AppNameGoesHere", щоб ви могли запустити фільтрацію слідів у цій конкретній назві програми. Гарна практика все одно.
3) Отримайте версію програми, що працює на невиробничому сервері. Розробіть список тестів, орієнтованих на поведінку для програми ("Коли користувач натискає кнопку" Новий елемент ", він створює новий елемент для цього користувача" і т. Д.). Почніть м'яке видалення об'єктів, які не відчувають жодного відношення до тестів, перейменуючи їх (Я використовую такий формат, як objectName_DEPRECATED_YYYYMMDD - датою є день, коли я планую його фактично видалити.) Перевірте всі свої тести.
За допомогою комбінації сеансу розширених подій, використання індексу DMV та м'якого видалення ви зможете визначити основні об’єкти, які використовує додаток, та добрий загальний консенсус щодо того, який об’єкт робить що.
Удачі!