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

Откуда:
Сообщений: 6
День добрый! Есть довольно сложный запрос, предназначенный для построения OLAP куба. В процессе переноса OLAP с одного сервера на другой столкнулся с тем, что запрос вместо 15 минут начал отрабатывать за 1,5 часа. Большую часть времени, если верить плану выполнения, занимает инструкция Sequence. На старом железе такой проблемы не было.
Подскажите пожалуйста по какой причине может так измениться поведение SQL сервера?
Планы запросов во вложении.

К сообщению приложен файл (Plans.zip - 64Kb) cкачать
23 авг 16, 17:38    [19580428]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
komrad
Member

Откуда:
Сообщений: 5703
ppdisk
Подскажите пожалуйста по какой причине может так измениться поведение SQL сервера?

планы разные
в медленном плане большие расхождения на ожидаемых и реальных объемах записей; nested loops в таком случае поедают по факту все время

обновите статистику по таблицам

на "старом" сервере, наверняка, планы обслуживания баз и частота выполнения отличается от аналогичных на "новом" сервере
23 авг 16, 18:33    [19580673]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
komrad
Member

Откуда:
Сообщений: 5703
ppdisk
.
Подскажите пожалуйста по какой причине может так измениться поведение SQL сервера?

кстати, а что вернет этот запрос на обоих серверах?

select @@version 
23 авг 16, 18:39    [19580706]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
komrad
Member

Откуда:
Сообщений: 5703
komrad
ppdisk
.
Подскажите пожалуйста по какой причине может так измениться поведение SQL сервера?

кстати, а что вернет этот запрос на обоих серверах?

select @@version 

полагаю, что
старый - SQL2008R2 SP1 (10.50.2500.0)
новый - SQL2014 SP2 (12.0.5000.0)

с тех пор как базу TradePsk перенесли, индексы перестраивали на ней, статистику обновляли?
23 авг 16, 18:53    [19580769]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
ppdisk
Member

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

Точно про версии сервера точно смогу ответить через 30 минут, но по памяти именно так.
Индексы перестраиваются каждую ночь, статистика так же обновляется. На старом сервере был такой же план обслуживания.
23 авг 16, 19:05    [19580828]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
komrad
Member

Откуда:
Сообщений: 5703
ppdisk
komrad,

Точно про версии сервера точно смогу ответить через 30 минут, но по памяти именно так.
Индексы перестраиваются каждую ночь, статистика так же обновляется. На старом сервере был такой же план обслуживания.


тогда заодно на новом еще вот этот запрос выполнить:

select name, compatibility_level 
from sys.databases 
where name ='TradePsk'
23 авг 16, 19:16    [19580868]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
ppdisk
Member

Откуда:
Сообщений: 6
ppdisk
komrad,

Точно про версии сервера точно смогу ответить через 30 минут, но по памяти именно так.
Индексы перестраиваются каждую ночь, статистика так же обновляется. На старом сервере был такой же план обслуживания.


новый:
Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64)
Jun 17 2016 19:14:09
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

старый:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
23 авг 16, 19:17    [19580871]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
ppdisk
Member

Откуда:
Сообщений: 6
komrad
ppdisk
komrad,

Точно про версии сервера точно смогу ответить через 30 минут, но по памяти именно так.
Индексы перестраиваются каждую ночь, статистика так же обновляется. На старом сервере был такой же план обслуживания.


тогда заодно на новом еще вот этот запрос выполнить:

select name, compatibility_level 
from sys.databases 
where name ='TradePsk'


Результат:
TradePsk 120
23 авг 16, 19:17    [19580872]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
komrad
Member

Откуда:
Сообщений: 5703
ppdisk
komrad
пропущено...


тогда заодно на новом еще вот этот запрос выполнить:

select name, compatibility_level 
from sys.databases 
where name ='TradePsk'


Результат:
TradePsk 120


попробуйте
ALTER DATABASE [TradePsk] SET COMPATIBILITY_LEVEL = 110

и снова прогнать запрос

или хинты отсюда
23 авг 16, 19:22    [19580881]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
komrad
Member

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

при переходе на SQL2014 и выше, стоит прочесть Optimizing Your Query Plans with the SQL Server 2014 Cardinality Estimator
23 авг 16, 19:29    [19580900]     Ответить | Цитировать Сообщить модератору
 Re: Операция Sequence занимает 70% времени выполнения запроса  [new]
ppdisk
Member

Откуда:
Сообщений: 6
komrad
ppdisk
пропущено...


Результат:
TradePsk 120


попробуйте
ALTER DATABASE [TradePsk] SET COMPATIBILITY_LEVEL = 110

и снова прогнать запрос

или хинты отсюда



Спасибо оргомное!
буду изучать что у нах там поменялось кардинально.

Запрос теперь вместо 15 минут выполняется 6. Но это из-за апгрейда железа.

Странно, что ALTER DATABASE [TradePsk] SET COMPATIBILITY_LEVEL = 100 не помогало, хотя пробовал.
23 авг 16, 19:40    [19580929]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить