Size: a a a

SqlCom.ru - уголок MS SQL

2021 May 21

SK

S K in SqlCom.ru - уголок MS SQL
Здравствуйте товарищи! Есть бд на скл 2016, около 1000 таблиц. Обнаружил 200 индексов со степенью фрагментации от 5 до 99. Сделал им ребилд, реорганайз. Через 10 минут фрагментация около 50 индексов вырастает до 5-20. Это вообще проблема? Если да, то проблема чего? Неправильного построения индексов или структуры таблиц или ещё чего-то?
источник

SK

S K in SqlCom.ru - уголок MS SQL
пейдж каунт у индексов от 200 и выше
источник

AD

Andrei Dirotchka in SqlCom.ru - уголок MS SQL
Если кратко - oledb command in dataflow - это конец производительности. Каждая строка делается в собственной транзакции.
Поэтому любые батчи будут лучше.
источник

k

karb0f0s in SqlCom.ru - уголок MS SQL
зависит от носителя, на котором лежат файлы базы. для СХД или SSD, где разница между линейным и случайным поиском секторов ничтожна - фрагментация никакого существенного влияния оказывать не будет. реальным показателем к ребилду может служить page fullness и page-сплиты, т.к. при низком наполнении страниц растёт физический объём используемых страниц, растёт потребление буферного кеша для хранения этих страниц и т.п.
источник

IS

Igor Sergeichik in SqlCom.ru - уголок MS SQL
Если индексы на маленьких таблицах, то в целом это может быть нормально.
источник

Д

Денис Лёвкин... in SqlCom.ru - уголок MS SQL
Возможно это вообще не является проблемой, т.к. есть ещё много факторов которые влияют на фрагментацию. Может имеет место активное изменение данных или таблицы используются как промежуточное хранение данных.
Возможно для индексов стоит посмотреть fill factor.
источник

SK

S K in SqlCom.ru - уголок MS SQL
какие значения page fullnes b pagesplit посоветуете считать критическими для ребилда?
источник

SK

S K in SqlCom.ru - уголок MS SQL
маленькая таблица в вашем понимании это какая? хоть примерно
источник

SK

S K in SqlCom.ru - уголок MS SQL
в таблицу активно вставляются данные. что-то можете посоветовать по настройке fillfactor?
источник

k

karb0f0s in SqlCom.ru - уголок MS SQL
со страницами, заполненными на 50% в два раза увеличивается число страниц для хранения одного и того же объема данных. для таблички на 10мб это наверное не критично, для таблиц в сотни гигабайт - это уже приличная разница.
источник

SK

S K in SqlCom.ru - уголок MS SQL
спасибо, учту
источник

IZ

Ilia Zviagin in SqlCom.ru - уголок MS SQL
ЭТО НЕ ПРОБЛЕМА!
Проблема - это когда не сделал вовремя бэкап!
источник

SK

S K in SqlCom.ru - уголок MS SQL
с этим не поспоришь)
источник

SK

S K in SqlCom.ru - уголок MS SQL
но ключевое слово здесь Вовремя - лучше это делать, наверное, после ребилда индексов?
источник

Д

Денис Лёвкин... in SqlCom.ru - уголок MS SQL
Опять же много факторов. Как уже подсказали - объем имеет значение. Если, например, индекс кластерный и это identity - рекомендуется ближе к 100. Однозначных правильных советов на 💯 процентов не будет.
источник

IZ

Ilia Zviagin in SqlCom.ru - уголок MS SQL
Лучше сделать бэкап до ребилда индексов чем вообще никогда
источник

SK

S K in SqlCom.ru - уголок MS SQL
согласен
источник

IZ

Ilia Zviagin in SqlCom.ru - уголок MS SQL
Это Проблема которой забивают себе голову многие.
Но это все равно что ловить пещинки в реке, чтобы она была чище. Занятие благородное, но почти бесполезное.

СУБД сама может использовать это место на страницах.

Если у БД такие сценарии использования, что у СУБД не получается это делать почти никогда, то фрагментация всё равно будет возникать и расти. А сценарии ты не поменяешь без изменения приложения.
источник

Д

Денис Лёвкин... in SqlCom.ru - уголок MS SQL
💯
источник

SK

S K in SqlCom.ru - уголок MS SQL
предлагаете менять приложение?
источник