Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
DECLARE defragCur CURSOR FOR
SELECT
[object_id],
index_id,
table_name,
index_name,
avg_frag_percent_before,
fill_factor,
partition_num
FROM dba_tasks.dbo.index_defrag_statistic
ORDER BY [object_id], index_id DESC --Сначала не кластерные индексы
page_count > 5 – я считаю, что перестраивать индексы с малым количеством страниц не имеет смыслаПерестраивать индексы с малым количеством страниц действительно не имеет смысла, только границу надо поднять как минимум до 8. До тех пор пока индекс содержит меньше 8 страниц, он размещается в смешанных экстентах и его дефрагментация/перестройка может не принести желаемого результата (msdn).
уменьшая фрагментацию, мы увеличиваем плотность данных на страницах
Про статистику я не забыл, msdn утверждает, что обновление статистики произойдет автоматически, если после rebuild мы явно не напишем STATISTICS_NORECOMPUTE = ON, я явно не писал
Из-за fill factor = 80 вы местами плотность данных не увеличиваете, а уменьшаете :). (это я занудствую, в общем-то, вы же писали зачем это делаете, но кто-то может удивиться, увидев, что после процедур, направленных на увеличение плотности данных, файл данных вырастает)Я думаю, из этого можно раздуть холивар, но дефрагментацию делать надо, почему бы не следить за тем как она делается, и получать информацию о состоянии индексов :)
И это верно, но статистика обновится только по тем индексам, для которых был сделан REBUILD. Для индекса, «подвергшегося» дефрагментации (REORGANIZE), статистика не обновится. И также не обновится статистика, созданная SQL Server'ом автоматически.Согласен. Но я не ставил перед собой цель описать весь план обслуживания БД, статья касается только индексов. А статистика у меня обновляется отдельным шагом.
IF OBJECT_ID('dbo.test1', 'U') IS NOT NULL
DROP TABLE dbo.test1
GO
CREATE TABLE dbo.test1
(
ID INT,
CONSTRAINT PK_test1_ID PRIMARY KEY (ID)
)
GO
SELECT OBJECT_ID('dbo.test1')
Дефрагментация индексов со сбором статистики MS SQL 2008 R2