Индекс восстановления влияет на файлы mdf /ldf. SQL Server 2008

Во время восстановления индекса использовалась опция «SORT_IN_TEMPDB = ON», чтобы избежать ненужного роста ваших файлов пользовательских баз данных.

Что это значит?

Выполняется полный процесс на TempDB и не растет mdf/ldf размер файла?

Например, перед reindex (база данных находится в режиме простого восстановления) наибольший размер индекса в базе данных составляет 25 ГБ

  • .mdf size (100GB выделено и использовано -> no freespace)
  • .ldf размер (20 ГБ)
  • TempDB имеет свободное пространство на 200 ГБ

Каков будет приблизительный размер для .mdf & .ldf. Они растут или нет?

6 голосов | спросил rmdussa 20 AM00000080000001531 2012, 08:54:15

2 ответа


6

Этот параметр управляет только промежуточным пространством сортировки (а не самим индексом). См. здесь для более подробного описания того, как ---- +: = 0 =: + ---- используется при создании индексов.

Вам все еще нужно достаточно свободного места в файлах данных для размещения второй копии индекса, потому что SQL Server должен установить новый индекс перед тем, как отбросить старый (он не перезаписывается на месте).

Объем пространства, необходимый в файле журнала, зависит от модели восстановления базы данных. Зайдите в этот пост в блоге для сравнение моделей tempdb и FULL (BULK_LOGGED будет таким же, как SIMPLE - другими словами, минимально регистрируется).

ответил Jon Seigel 21 PM00000050000002931 2012, 17:35:29
6

Когда вы перестраиваете индекс, механизм базы данных создает так называемый «результат промежуточной сортировки». Эти промежуточные результаты подобны кускам, которые объединены, чтобы стать вашим индексом, и для создания этих кусков требуется пространство. Если он может заставить ядро ​​базы данных отсортировать индекс в памяти; но в противном случае он сохранит промежуточные результаты в группе файлов назначения.

Использование опции SORT_IN_TEMPDB запрашивает SQL Server для хранения этих промежуточных результатов в TempDb вместо того, чтобы перестраивать их в исходной базе данных. Когда TempDb находится на другом диске в исходной базе данных, это может помочь в выполнении задачи перестройки и может снизить влияние производительности на вашу базу данных.

Требование о восстановлении индексов состоит в том, что у вас должно быть достаточно места (где бы вы ни решили построить индекс) для хранения самого большого индекса в вашей базе данных: это в вашем примере 25 ГБ. Который, если вы используете TempDb, вы должны легко иметь.

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

SORT_IN_TEMPDB:

http://msdn.microsoft.com/en-us/library/ms188281.aspx

Надеюсь, это поможет вам.

ответил Mr.Brownstone 21 AM000000110000003731 2012, 11:08:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132