Могу ли я спросить, есть ли способ узнать подходящее время для обновления статистики таблиц / индексов?
В последнее время производительность ухудшается с одной из основных таблиц витрины данных в нашем BI-DWH, SQL Server 2012Все индексы обрабатываются каждые выходные для реорганизации / перестройки в соответствии с их процентом фрагментации, и теперь они меньше 5% как avg_fragmentation_in_percent.
Таким образом, мы обнаруживаем, что это вызвано устаревшей статистикой таблицы / индекса или фрагментацией таблицы или около того..
Как правило, мы включили автоматические статистические данные, и статистика таблиц / индексов была обновлена в июле 2018 г.ежедневное увеличение примерно на 0,5 млн. записей.
Вот статистика PK и фактическое количество записей в этой таблице.
-- statistics
dbcc show_statistics("DM1","PK_DM1")
Name Updated Rows Rows Sampled Steps Density AveragekeylengthString Index Filter Expression Unfiltered Rows
------------------------------------------------------------------------------------------------------------------------------------------------------
PK_DM1 07 6 2018 2:54PM 661696443 1137887 101 0 28 NO NULL 661696443
-- actual row count
select count(*) row_cnt from DM1;
row_cnt
-------------
706723646
-- Current Index Fragmmentations
SELECT a.index_id, name, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(N'DM1'),
OBJECT_ID(N'dbo.DM1'), NULL, NULL, NULL) AS a
JOIN sys.indexes AS b
ON a.object_id = b.object_id AND a.index_id = b.index_id;
GO
index_id name avg_fragmentation_in_percent
--------------------------------------------------
1 PK_DM1 1.32592173128252
7 IDX_DM1_01 1.06209021193359
9 IDX_DM1_02 0.450888386865285
10 IDX_DM1_03 4.78448190118396
Таким образом, разница между статистикой составляет менее 10%, но более 45 миллионовколичество строк и фактическое количество записей.Мне интересно, может ли стоить обновить статистику таблицы / индекса вручную в этом случае.
Если есть какая-либо другая информация, которую вы определили с подходящим временем для обновления статистики, любой совет был бы очень признателен.
Спасибо.
- Результат
Благодаря совету @scsimon я подробно проверил всю статистику индекса, и в главном индексе отсутствовал RANGE_HI_KEY - этот индекс основан надата регистрации и не было диапазона после июля 2018 года последняя обновленная статистика.(Заявление было сделано пользователем, когда он искал записи за сентябрь 2018 года)
Поэтому я решил обновить статистику таблиц / индексов и подтвердил, что этот же запрос был улучшен с 1 часа 45 минут до 3,5 минут.
Дилпи оценил все советы на мой вопрос.
С наилучшими пожеланиями.