Фрагментация индексов

1. ipoloskov 164 30.06.22 12:56 Сейчас в теме
Столкнулся с непонятной ситуацией. В планах обслуживания у меня настроена ежедневная реиндексация со следующими параметрами:
- Перестроение, если процент фрагментации > 30
- Реорганизация, если процент фрагментации > 5.
Обратил внимание, на огромный размер бэкапа журнала транзакций после реиндексации. Запустил скрипт, показывающий процент фрагментации. И он показал, что по ряду индексов фрагментация больше 20 (через несколько часов после ночной реиндексации), в том числе по таким большим таблицам, как регистры СебестоимостьТоваров и ТоварыОрганизации. В них явно не пишутся данные с такой интенсивностью, чтобы вызывать фрагментацию. В чем может быть дело?

Диски SSD. В статье на Хабре написано, что для SSD дисков частая реиндексация не нужна, и пороговые значения процента фрагментации можно делать выше. Кто какие настройки использует?
https://habr.com/ru/post/576882/

Скрипт реиндексации
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. redfred 30.06.22 18:02 Сейчас в теме
(1)
Диски SSD. В статье на Хабре написано, что для SSD дисков частая реиндексация не нужна, и пороговые значения процента фрагментации можно делать выше. Кто какие настройки использует?


В принципе да, на ssd фрагментация не так критична. Слышал рекомендации ставить порогом 30% и 80%, но с ходу не найду сейчас где именно.
Такая частая реиндексация, как у вас, выглядит перебором. Как правило раза в неделю достаточно, плюс ежедневное обновление статистики
2. booksfill 30.06.22 17:51 Сейчас в теме
1. Причем тут SSD диски и дефрагментация? Хотите из быстрых получать данные помедленней?

2. Тщательно не смотрел, может ошибаюсь или вы, вообще привели некий рекомендуемый скрипт, вместо своего, но сдается, что where ... AND s.avg_fragmentation_in_percent > 30 никак не согласуется с утверждением "
- Реорганизация, если процент фрагментации > 5.

а
CASE WHEN s.avg_fragmentation_in_percent > 60
THEN 'REBUILD
с утверждением - Перестроение, если процент фрагментации > 30

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

3. В общем, кто на ком стоял я точно не понял, но если сразу после ночи процент фрагментации индексов СебестоимостьТоваров и ТоварыОрганизации стремится к нулю, то напрашивается совет - помониторить вашим скриптом и понять в какой момент все начинается.
4. ipoloskov 164 01.07.22 10:50 Сейчас в теме
(2) в этом скрипте цифры уже поправил, раньше было 5% и 30%
Про пункт 1 не понял, можете пояснить подробнее?
5. booksfill 01.07.22 12:22 Сейчас в теме
(4)
Про пункт 1 не понял, можете пояснить подробнее?


Вы почитайте комментарии по своей ссылке. Там многое объясняется. В том числе и то, что разница между случайным и последовательны чтением есть, и немалая, и на SSD.
Да и про упреждающее чтение, которое, вероятно, не будет работать на сильно фрагментированных индексах автор тоже "забыл".
Заодно и "забыл", что оптимизатор имеет дело с логической структурой индексов, отсюда и план выполнения запросов может отличаться драматически. И сбор статистики, особенно частичной, может не выручить.

В общем-то, вопрос интересный. Если есть желание, можете поставить себе SSD диски, RAID контроллер, залить туда реальную базу и поиграться и без рэйда и с разными видами оного, заодно и свою статью напишите "за" или "против".

Безотносительно к вышесказанному, сильная фрагментация за короткое время - это плохо не только с точки зрения производительности. Если этого явно не ожидается, то надо разбираться, а что вообще такого пишется в эти таблицы и почему. Если же так и должно быть, то попробуйте поиграться с fill factor.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот