Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Про план обслуживания  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
План следующий

00:00 очистка от старых файлов и отчетов
00:15 проверка ценостности
00:30 reindex (ALTER INDEX [Index] ON [dbo].database] REORGANIZE WITH (LOB_COMPACTION = ON))
02:00 обновление статистики
02:30 бекап базы
06:00 бекап логов (с 6 до 22 каждый час)

Не будет ли reindex сбивать статистику? Если будет, то что изменить? Я пока сделал запуск реиндиксации раз в месяц.

Microsoft SQL Server 2005 - 9.00.5057.00 (Intel X86) Mar 25 2011 13:50:04 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
29 июн 11, 15:07    [10893453]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Леша777
Guest
При rebuild индекса статистика полностью пересчитывается( аналог опции WITH FULLSCAN). При REORGANIZE не пересчитывается.
Если у вас обновление статистики производится с пом UPDATE STATISTICS без FULLSCAN, то

BOL :

Note:
The default behavior is to perform a sample scan on the target table or indexed view. The database engine automatically computes the required sample size.


Т.е сделали ребилд индекса (как результат полностью пересчитали статистику), потом еще раз обновоили статистику без FULLSCAN, то статистика потенциально станет менее точной.

Я при ребилде индексов, сохраняю id объектов, где статистика индексы были перестроены и пропускаю их при обновлении статистикки.
29 июн 11, 15:24    [10893607]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Anatoly Podgoretsky,

REORGANIZE статистику не затрагивает
REBUILD затрагивает, в зависимости от значения параметра STATISTICS_NORECOMPUTE
Подробности, как обычно, в BOL.

Вот тут пример скрипта, который делавет либо REORGANIZE, либо REBUILD, в зависимости от степени фрагментации индекса.
29 июн 11, 15:25    [10893619]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
автор
REORGANIZE статистику не затрагивает

У меня создалось другое впечатление, после перевода реорганизации индекса раз в месяц, у меня длинные запросы стали работать в четыре раза быстрее. План создавался с помощью родного мастера. Использован "Reorganize Index Task", а не "Rebuild Index Task". Все что делалось с планом - это выбор времени запуска, сначала было раз в сутки, потом сменил на раз в месяц.
Пока я не уверен в правильности методики.
29 июн 11, 16:21    [10894180]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Anatoly Podgoretsky,

Когда обновлялась статистка можно проверить с помощью функции STATS_DATE.
29 июн 11, 16:31    [10894309]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Статистика у меня обновляется раз в сутки,
автор
02:00 обновление статистики
29 июн 11, 18:58    [10895640]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Леша777
Guest
Какой командой обновляется статистика ? sp_updatestas / UPDATE STATISTICS. REBUILD или REORGANIZE опредять по степени фрагментации см. sys.dm_db_index_physical_stats (avg_fragmentation_in_percent, avg_page_space_used_in_percent), а не просто реорганизацию раз в месяц.

Еще раз :
REBUILD приводит к обновлению статисики, как UPDATE STATISTICS WITH FULLSCAN.
REORGANIZE: не приводит к пересчету статистики.

Если sp_updatestas или UPDATE STATISTICS без парааметров, то для подсчета статистики выбираются некий небольшой объем данных (гораздо менее точное чем FULLSCAN). Так теряется ее точность.
29 июн 11, 19:52    [10895761]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
Anatoly Podgoretsky
У меня создалось другое впечатление, после перевода реорганизации индекса раз в месяц, у меня длинные запросы стали работать в четыре раза быстрее. .


Здесь не в статистике дело.
Это ускорение связано не с изменением плана выполнения(влиянием статистики), а с физической оптимизацией индекса (физическим ребилдом).
План доступа может и не изменяться, но путь доступа будет короче (ветки физически перепривязываются, оптимизируются уровни в деревьях). Попросту говоря - вместо нескольких чтений теперь достаточно сделать одно и т.д.
30 июн 11, 01:17    [10896540]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Anatoly Podgoretsky,

а если не секрет, каков объём БД, и сколько времени занимает ребилд индексов?
30 июн 11, 02:25    [10896599]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Anatoly Podgoretsky,

да ,и еще один. Даже если база на всю голову OLTP-шная, действительно ли еженощный ребилд индексов себя окупает?
Ну, опустим доводы типа: "серверу ночью всё равно заняться нечем"...
Некоторые сервера по ночам часов по 6 считают всякую фигню...
Опустим износ механики у дисков, или износ ячеек у SSD.
Опустим излишний расход энергии как на вычисления, так и на охлаждение.

Я не стебусь.
DBCC DBREINDEX кушает много ресурсов...
Вот если для OLTP ставить fillfactor в 60-80...
Оно разве за день окупает те полтора часа работы ночью? Оно хоть 15 минут за день экономит?

Ну, если для OLAP, то fillfactor 100...
Но опять вопрос... Какова экономия за день?
30 июн 11, 02:40    [10896616]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Anatoly Podgoretsky,

Блин, я ступил. Сорри, посыпаю голову пеплом. Горько плакаю. Теперь перечитал, увидел что реиндекс раз в месяц.
Норм. Самое то.

Если реиндекс в 00:30, а статистика в 02:00, то скорее всего раз в месяц будет неудобно.

Реиндекс по насколько -нибудь приличной базе может работать эдак часов 3-7...
(ну, у меня на одной базе в 350 гиг - примерно так. 8 ядер i7, 12 дисков SAS)

Как вариант - выдать ночью с субботы на воскресенье всю ночь на реиндекс, и остальное не запускать.

Как бы ни хотелось, чтобы было 24х7, но это время - самое мёртвое, как ни крути...
30 июн 11, 02:58    [10896625]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
вообще - вот примерно так...
Я это лед эдак N назад написал...


  declare @nm varchar(1000), @ID int, @dbname nvarchar(128)
  select @dbname = db_name()
  --Курсор для имен таблиц базы.
  declare STAT_Cursor cursor for 
    select '['+@dbname+'].['+s.name+'].['+o.name+']', o.ID  
    from  sys.sysobjects o, sys.schemas s
    where o.uid = s.schema_id and
    o.xtype = 'U' and o.name <> 'dtproperties' 
     order by (select sum(dpages) from sysindexes where sysindexes.id = o.id)
     for read only
  open STAT_Cursor 
  fetch next from STAT_Cursor into @nm, @ID
  while @@fetch_status = 0 begin
    exec('DBCC DBREINDEX ('''+@nm+''', '''', 100)')
    exec('update statistics '+@nm+' with fullscan, all')
    fetch next from STAT_Cursor into @nm, @ID
  end 
  close STAT_Cursor
  deallocate STAT_Cursor
  --ЖМЁМ БАЗУ (СААВСЕМ не обязательно, если размер не критичен)
  DBCC shrinkdatabase(@dbname)
30 июн 11, 03:01    [10896626]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Makar4ik
Anatoly Podgoretsky,

а если не секрет, каков объём БД, и сколько времени занимает ребилд индексов?

Не секрет, баз 5 штук, reorganize занимает 60-70 секунд, размер каждой базы меньше 2 гб.
30 июн 11, 08:44    [10896869]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Леша777
Какой командой обновляется статистика ? sp_updatestas / UPDATE STATISTICS. REBUILD или REORGANIZE опредять по степени фрагментации см. sys.dm_db_index_physical_stats (avg_fragmentation_in_percent, avg_page_space_used_in_percent), а не просто реорганизацию раз в месяц.

Еще раз :
REBUILD приводит к обновлению статисики, как UPDATE STATISTICS WITH FULLSCAN.
REORGANIZE: не приводит к пересчету статистики.

Если sp_updatestas или UPDATE STATISTICS без парааметров, то для подсчета статистики выбираются некий небольшой объем данных (гораздо менее точное чем FULLSCAN). Так теряется ее точность.

Я не смотрел, какой код генерирует мастер плана обслуживания, очень долго SQL генерируется, но я все таки посмотрел.
UPDATE STATISTICS WITH FULLSCAN
30 июн 11, 08:50    [10896896]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Anatoly Podgoretsky
Леша777
Какой командой обновляется статистика ? sp_updatestas / UPDATE STATISTICS. REBUILD или REORGANIZE опредять по степени фрагментации см. sys.dm_db_index_physical_stats (avg_fragmentation_in_percent, avg_page_space_used_in_percent), а не просто реорганизацию раз в месяц.

Еще раз :
REBUILD приводит к обновлению статисики, как UPDATE STATISTICS WITH FULLSCAN.
REORGANIZE: не приводит к пересчету статистики.

Если sp_updatestas или UPDATE STATISTICS без парааметров, то для подсчета статистики выбираются некий небольшой объем данных (гораздо менее точное чем FULLSCAN). Так теряется ее точность.

Я не смотрел, какой код генерирует мастер плана обслуживания, очень долго SQL генерируется, но я все таки посмотрел.
UPDATE STATISTICS WITH FULLSCAN


Везёт Вам :) вот у меня на могучей базе в 100Гб статистика FULLSCAN по всем таблицам идёт 6ть часов, потому что из 200 таблиц только 12 занимают больше половины объёма базы(будь прокляты те индейцы что организовали эту структуру)...по 10 - 50млн.строк, а это жуть как тяжко для Database Engine. Приходиться проходить по всем с параметром ALL - 20мин. и всё ОК :)
30 июн 11, 10:50    [10897602]     Ответить | Цитировать Сообщить модератору
 Re: Про план обслуживания  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Дополнительная информация:
По последнему плану обслуживания у меня установлена реорганизация индексов раз в месяц 15 числа. Теперь есть статистика.
До 15 числа запрос выполнялся быстро, а сегодня уже 6 минут. Так что реорганизация влияет и влияет пагубно на статистику и план выполнения запросов.

Как решение я сместил реорганизацию на 20 число, думаю это улучшит ситуацию.
19 июл 11, 12:35    [10994152]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить