Pull to refresh

Comments 2

UFO just landed and posted this here
В статье вопросы производительности отдельного оговорены.
Общий «дисклеймер»:
При этом далее предполагается, что у нас есть короткое регламентное окно, когда мы можем использовать всю (или большую часть) производительности сервера баз данных для своих целей, без учёта потребностей пользователей. Если у вас сервер SQL значительно нагружен в режиме 24/7 — вам нужно другое решение.
и конкретно по параллельному перестроению индексов:
Внимание! Многопоточное перестроение индексов может загрузить ваш сервер баз данных на 100% и вызвать другие неожиданные последствия, я предупредил! Всегда тестируйте незнакомый код в тестовой среде.

Касательно параметра MAXDOP для ALTER INDEX — то:
  • главное: он работает только в редакции Enterprise, в Standard и ниже — молча игнорируется;
  • он в теории распараллеливает процесс в рамках одного индекса, что при наличии избыточной процессорной «мощи» может быть недостаточно быстро;
  • ну и когда я тестировал влияние этого параметра на тестовой копии рабочей базы в Developer Edition — разница была в рамках статистической погрешности.

Собственно крах надежд, возлагаемых на MAXDOP — в том числе и сподвиг меня на написание нужной функции самому.
И хотя основная задача и не была связана с индексами, но функция получилась универсальная и позволяет параллельно выполнять любые атомарные (не связанные друг с другом) запросы.
В том числе использую её и для перестроения индексов, как показано в примере, с учётом указанных выше оговорок по производительности.
Sign up to leave a comment.

Articles