Нужна ли дефрагментация индексов после перестроения индексов?

Slon747
Дата: 24.02.2010 15:58:48
По поводу регламентных заданий прочитал следующее http://infostart.ru/public/65955/:
Также желательно делать полную переиндексацию, с блокировкой БД, хотя бы раз в неделю, естественно после полной переиндексации сразу же делается дефрагментация индексов и обновление статистики.

Так вот, правда ли, что нужна дефрагментация индексов после их перестроения?
Я считал, что после перестроения они и так в идеальном состоянии.
Denis Reznik
Дата: 24.02.2010 17:29:49
Не нужно, т.к. при REBUILD структура индекса пересоздаётся заново при этом устраняется как внутренняя так и внешняя фрагментация. А REORGANIZE устраняет только внутреннюю.
Denis Reznik
Дата: 24.02.2010 17:36:42
BOL
Rebuilding an index drops and re-creates the index. This removes fragmentation, reclaims disk space by compacting the pages based on the specified or existing fill factor setting, and reorders the index rows in contiguous pages.

цитата из более надёжного источника - http://msdn.microsoft.com/en-us/library/ms188388.aspx
Slon747
Дата: 24.02.2010 17:49:35
Спасибо. Только я запутался в терминах.
Ночью выполняется команда:
EXEC sp_MSforeachtable N'DBCC DBREINDEX(''?'')'
Про DBCC DBREINDEX прочитал "Перестраивает один или более индексов для таблицы в указанной базе данных".
Но не понял, если перестраивает, то значит делает "REBUILD", а значит после этого устраняется фрагментация?
Denis Reznik
Дата: 24.02.2010 18:40:17
да, насколько я знаю, DBCC DBREINDEX - аналог REBUILD, а DBCC INDEXDEFRAG - REORGANIZE
DeColo®es
Дата: 24.02.2010 19:41:21
И это не последняя отсебятина в данной статье.
Чего стоят обрезание лога при Simple модели и сама Simple модель для базы.
Александр Гладченко
Дата: 25.02.2010 10:58:28
DeColo®es
И это не последняя отсебятина в данной статье.
Чего стоят обрезание лога при Simple модели и сама Simple модель для базы.


Не будь так строг к одинэсникам... их жалеть нужно

EXEC sp_MSforeachtable N'DBCC DBREINDEX(''?'')' - это уж слишком жестоко. Даже в 1С за день все индексы не фрагментируются до такой степени... есть более цивилизованные алгоритмы, например мой :) http://msmvps.com/blogs/gladchenko/archive/2008/03/31/1563721.aspx
Crimean
Дата: 25.02.2010 11:48:29
Александр Гладченко
EXEC sp_MSforeachtable N'DBCC DBREINDEX(''?'')' - это уж слишком жестоко


да, но штатный регламент именно так и работает :)
Критик
Дата: 25.02.2010 14:02:33
Александр Гладченко,

А как ваш алгоритм работает с секционированными таблицами/индексами?
вроде схемы алгоритм тоже не учитывает)
Crimean
Дата: 25.02.2010 14:10:38
> А как ваш алгоритм работает с секционированными таблицами/индексами?

это ш иллюстрация только, а не готовое решение