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

Откуда: Израиль
Сообщений: 77
Здравствуйте,

Такая вот срочная проблема, очень большая база, все статистики в таблицах всегда обновлялись вручную, соответственно
"sp_updatestats" или "sp_createstats" запускался всегда с параметром "norecompute".

Теперь срочно понадобилось восстановить автоматическое обновление статистик для всех таблиц базы, то есть снести маркировку STATISTICS_NORECOMPUTE = ON.

В принципе достаточно запустить "EXEC sp_updatestats" БЕЗ "norecompute" и все станет как нужно, но просто нет на это времени.

Для индексов есть возможность сделать ALTER:

ALTER INDEX [index_name]
ON [schema].[table]
SET ( STATISTICS_NORECOMPUTE = OFF );

А вот для таблиц, не могу ничего найти, пробовал сделать по тому же формату ALTER TABLE , но не выходит.

Никто не подскажет как выйти из ситуации, есть ли подходящий синтакс для изменения данного FLAG без обновления самой статистики таблиц большой базы данных?

Спасибо!!
22 дек 15, 00:17    [18591686]     Ответить | Цитировать Сообщить модератору
 Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
dimox
Member

Откуда: Израиль
Сообщений: 77
Я извиняюсь, но вроде как получилось, извините за излишний пост, ну может кому когда понадобится.

------------------------------------
USE database_name

SELECT 'exec sp_autostats ' + o.name + ', ''ON''' FROM sysobjects o
WHERE ( OBJECTPROPERTY(o.id, N'IsUserTable') = 1 OR OBJECTPROPERTY(o.id,
N'IsUserView') = 1 ) AND OBJECTPROPERTY(o.id, N'IsMSShipped') = 0 ORDER BY
o.name
------------------------------------
22 дек 15, 00:46    [18591769]     Ответить | Цитировать Сообщить модератору
 Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
dimox,

не было никакого на регулярных таблицах смысла использовать STATISTICS_NORECOMPUTE=ON.
22 дек 15, 13:18    [18593814]     Ответить | Цитировать Сообщить модератору
 Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Владислав Колосов,

Если вы с таким не сталкивались, то это не означает что смысла нет. Пару примеров:

  • На огромных таблицах, автоматические обновление статистики в неподходящий момент может привести к подвисанию запросов, вплоть до таймаута.
  • Автоматический пересчет статистики всегда делает это используя SAMPLE, что в некоторых случаях может привести к очень плохим результатам по сравнению с FULL.
  • 23 дек 15, 01:20    [18597252]     Ответить | Цитировать Сообщить модератору
     Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
    Ckey
    Member

    Откуда:
    Сообщений: 56
    Mind,
    можно ещё примеры?
    какой размер таблицы должен быть?
    23 дек 15, 09:23    [18597610]     Ответить | Цитировать Сообщить модератору
     Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
    Владислав Колосов
    Member

    Откуда:
    Сообщений: 7868
    Mind,

    а огромность - это сколько? На таблицах до миллиарда записей вроде бы не заметен перерасчет с флагом 2371. Насчет SAMPLE таки да, но я имел в виду, что можно использовать и авторасчёт статистики и заданный по расписанию.
    23 дек 15, 11:23    [18598204]     Ответить | Цитировать Сообщить модератору
     Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2322
    Владислав Колосов
    а огромность - это сколько? На таблицах до миллиарда записей вроде бы не заметен перерасчет с флагом 2371.
    Все зависит от нагрузки и критичности. Если к таблице выполняется сотни запросов в секунду, то даже задержка в 5 секунд на обновление статистики может оказатся ощутимой.
    Флаг 2371, насколько я помню, просто обеспечит более частый пересчет статистики, но не решит проблемы. Как один из вариантов решения - асинхронное обновление, но с ним тоже не все так просто.
    Владислав Колосов
    Насчет SAMPLE таки да, но я имел в виду, что можно использовать и авторасчёт статистики и заданный по расписанию.
    В итоге может получится, что до обеда у нас запросы летают, потому что ночью был FULL, а после обеда тормозят, потому что статисика автообновилась.
    23 дек 15, 21:32    [18601495]     Ответить | Цитировать Сообщить модератору
     Re: Изменить NORECOMPUTE на OFF без UPDATE TABLE STATS  [new]
    Mind
    Member

    Откуда: Лучший город на Земле
    Сообщений: 2322
    Ckey,

    Все очень индивидуально и зависит от задачи. Универсального решения не существует.
    23 дек 15, 21:33    [18601499]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить