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

Откуда:
Сообщений: 638
Всем доброго дня!
Есть база, которая крутится на sql2008 R2 в режиме совместимости с 2000. В качестве теста есть хранимка, которая из-под себя запускает еще кучу хранимок, которые работают с вьюхами на десятки миллионов записей. Вьюхи оптимизированы, т.е. до оптимизации хранимка отрабатывала 4 часа, сейчас максимум 2 минуты. Но, суть не в этом. Появилась задача отказаться от режима совместимости. делал следующим образом: из бэкапа развернул бразу, убрал режим совместимости, убил все констрейнты, ключи и индексы. Получилась голая база с одними таблицами. после этого накатил скрипт по созданию PK, FC и индексов. После этого та же процедура отработала 10 минут. Это конечно не 4 часа, как было в самом первом варианте, но и не 2 минуты. Кто-нибудь сталкивался с подобным? Поделитесь опытом.

ПЫ.СЫ. Просьба не отправлять к планам запроса сразу. Это уже самый последний вариант опять разковыривать логику и отлавливать, в каком месте тормоз и уже его анализировать планом. Это все я уже делал. Уж очень не хочется опять в день сурка играть
7 сен 11, 16:27    [11242309]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Bobby
ПЫ.СЫ. Просьба не отправлять к планам запроса сразу.
Тогда гадайте на кофейной гуще.
7 сен 11, 17:02    [11242665]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
Гавриленко Сергей Алексеевич,
да кофе тут не поможет, понятно, что без этого не обойдется. просто интересен сам факт, в чем причина
7 сен 11, 17:35    [11243000]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
iljy
Member

Откуда:
Сообщений: 8711
Bobby
Гавриленко Сергей Алексеевич,
да кофе тут не поможет, понятно, что без этого не обойдется. просто интересен сам факт, в чем причина
Причина в изменении плана. Можно погадать, в каком именно.
7 сен 11, 18:27    [11243453]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
LenaV
Member

Откуда: USA
Сообщений: 6796
а вся остальная работа тоже замедлилась
или только эта процедура?
sp_updatestats , dbcc updateusage помогают.
8 сен 11, 00:28    [11244681]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
LenaV,
проверялось именно на этой процедуре, т.к. она самая зубодробительная
9 сен 11, 14:03    [11253907]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
LenaV,
прогнал dbcc updateusage. ничего не поменялось
9 сен 11, 14:18    [11254031]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
закэшэны справа
Guest
2 минуты - со сбросом кэша?
9 сен 11, 15:11    [11254469]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
закэшэны справа,
даже с перезагрузкой сервера
9 сен 11, 15:40    [11254766]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
закэшэны справа
Guest
Bobby,

я про то как вы фактически организовывали замер времени в обоих случаях, а не про вобще.
автор
Просьба не отправлять к планам запроса сразу

статистика io
9 сен 11, 15:48    [11254840]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
LenaV
Member

Откуда: USA
Сообщений: 6796
статистика io
если у вас в коде есть какие-нибудь hints - пересмотрите их или уберите.
partitioned view - часто проблема
9 сен 11, 17:56    [11256023]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
Разобрался, что тормозило все дело. Пришлось переписать логику в одной процедуре. В первоначальном варианте был мега-селект с горой джоинов как правых, так и левых из многомиллионных вьюх. в конце джоинов была строка:

      WHERE 
        base.ID IN (SELECT ID FROM @filter) AND base.DIRECTION = 1

в @filter предварительно сливались айдишки, по которым шел расчет, собс-но. Вот это условие и тормозило всю работу. Стоило в условии явно указать, по каким айди фильтр -- все залетало. Что сделал: переписал весь этот запрос под динамический sql так, чтоб вместо SELECT ID FROM @filter формировалась строка через запятую с айдишками (57657,576572,14225.......) , учтя при этом, что длинна переменной может итоговой может превысить допустимое кол-во символов т.е. в итоге получилось в конце:

EXEC sp_executesql @sql,N'@cCdrRowAddCreated int,@DATE DATETIME',@cCdrRowAddCreated=@cCdrRowAddCreated,@DATE=@DATE
где в переменную @sql и занес весь этот селект невероятный. Ну и все, соответственно, заколосилось. Не понятным осталось, почему старый вариант летал в режиме совместимости с 2000, а без -- ползал, как черепах обкуреный :))
13 сен 11, 15:30    [11270105]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
iljy
Member

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

зря. Скорее всего достаточно было бы заменить табличную переменную на временную таблицу, и кластерный индекс на ней сделать. Причина банальна - на табличных переменных не ведется статистика.
13 сен 11, 15:33    [11270136]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
iljy,
в эту таблицу заливалось максимум 500-600 айдишек. зачем там еще индекс
13 сен 11, 15:37    [11270192]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Bobby
в @filter предварительно сливались айдишки
Сливались откуда??
Почему их сразу в запросе не заюзать? Без табличной переменной?
13 сен 11, 15:38    [11270203]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
iljy,
и опять же возвращаясь к нашим баранам, в режиме совместимости все летало-же
13 сен 11, 15:38    [11270207]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
iljy
Member

Откуда:
Сообщений: 8711
Bobby
iljy,
в эту таблицу заливалось максимум 500-600 айдишек. зачем там еще индекс

Что бы во-первых - не сортировать линий раз и не сканировать, а во-вторых - чтобы статистика велась. Про табличные переменные сервер ничего не знает, поэтому предполагает 1 запись и запросто устраивает вложеные циклы. А 500-600 итераций - это сурово.
13 сен 11, 15:39    [11270217]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
iap,
сперва работает некая логика, которая формирует этот список, заливая айдишки в @filter, а потом уже подставляется в итоговый запрос
13 сен 11, 15:41    [11270228]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
iap
Bobby
в @filter предварительно сливались айдишки
Сливались откуда??
Почему их сразу в запросе не заюзать? Без табличной переменной?
Вы табличную переменную через параметр процедуры передаёте?
13 сен 11, 15:41    [11270229]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
iap
Вы табличную переменную через параметр процедуры передаёте?
В режиме совместимости с 2000-м, наверно, нет...
Тогда непонятно.
13 сен 11, 15:43    [11270246]     Ответить | Цитировать Сообщить модератору
 Re: Быстродействие и режим совместимости  [new]
Bobby
Member

Откуда:
Сообщений: 638
iap,
нет, создаю в теле процедуры:
DECLARE @filter Table (num INT IDENTITY(1,1), ID int not null)
13 сен 11, 15:44    [11270252]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить