Как стать автором
Обновить

Комментарии 9

Если индексы с данными на SSD, дефрагментация пользы не приносит, только напрасно тратит циклы перезаписи TLC. Мало того, она ещё и статистику по колонкам портит. SSD рассеивают запись, чтобы увеличить срок службы дисков, и это превращает дефрагментацию в «тыкву». Пора Рендалу на покой :))))
НЛО прилетело и опубликовало эту надпись здесь

Не совсем понял, что имеется в виду. Оверинжениринг - это обслуживать индексы в принципе? Или оверинжениринг - это не использовать стандартные планы обслуживания?

НЛО прилетело и опубликовало эту надпись здесь

Так может лучше вообще не трогать индексы на таких системах? Не насиловать регулярно диски, а лучше почаще выполнять checkdb?

Ну, т.е. пост же как раз об этом - перестройка индексов стандартными средствами может дать какой-то минимальный прирост производительности (если он вообще будет), но потребует кучу ресурсов, сгенерирует тонну логов, инвалидирует кучу планов и может вызвать блокировки (на не-Enterpise редакции).

В вашем примере как раз только процент заполненности страницы и может сыграть какую-то роль. Памяти же фрагментированные индексы, заполненные на 100 процентов будут занимать столько же, сколько и совсем не фрагментированные.

НЛО прилетело и опубликовало эту надпись здесь
Вставлю свои пару копеек. Анализировать значение avg_page_space_used_in_percent правильно, но на практике получать достаточно затратно с точки зрения ресурсов — это приводит к полному (или частичному в некоторых частных случаях) сканированию выбранного индекса. Кроме того, одно дело, когда человек вызывает точечно dm_db_index_physical_stats указывая точно какой индекс, другое дело сканить всю базу (которая может не один терабайт весить).

Можно немного посмотреть с другой стороны… залесть в sys.allocation_units и если есть большое расхождение между total_pages и used_pages, то это потенциальный кандидат для ребилда.

За опросник слезу пустил ​:)​ когда увидел кого перечислили в сторонних решениях. Честно рад что моим тулом пользуются.
Пример у нас база на 5GB, хостится на сервере с 128GB RAM

У нас 5 TB на сервере с 128GB RAM — так что без "оверинжениринга" никак. И там не доли процента из производительности индекса. Так что без ребилдинга не обойтись.

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

Более того, MS, оказывается, переписали свой whitepapper по перестройке индексов и там прямо пишут, что зачастую положительный эффект, наблюдаемый после ребилда - это следствие обновления статистики, а не ребилда как такого.

Тот же Озар, емнип, идёт ещё дальше и пишет, что зачастую и обслуживание статистики это "оверинжениринг", а эффект проявляется из-за того, что процедурный кэш инвалидируется.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории