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

Откуда: Москва
Сообщений: 93
Добрый день Господа!
Есть запрос, который иногда выполняется очень быстро, а порой очень медленно.
(@P1 nvarchar(5))SELECT A.CHANGEGUID,A.STOREID,A.TERMINALID,A.TABLENAME,A.ROWRECID,A.ROWGUID,A.CHANGETYPE,A.CHANGEDATE,A.CHANGETIME,A.REPLICATIONCOUNTERFROMORIGIN,A.REPLICATED,A.ROWSTATUS,A.RECVERSION,A.RECID,A.ROWDATA FROM GM_REPLPOSDATACHANGES A WHERE (DATAAREAID=@P1)

Когда он выполняется медленно фрагментация индексов не превышает 5%, статистика обновлена 2 часа назад.
При этом при перестроении индексов проблема уходит, но и вроде бы при обновлении статистики она исчезает.
Вот его план запроса:
22 янв 16, 12:23    [18715078]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
[img=]

К сообщению приложен файл. Размер - 49Kb
22 янв 16, 12:24    [18715085]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Вопрос: что это за блок в плане запроса "Clustered index Insert (CWT_PrimaryKey)"? При его появлении в плане достаточно ли обновить статистику?
gerogekochkin
Добрый день Господа!
Есть запрос, который иногда выполняется очень быстро, а порой очень медленно.
(@P1 nvarchar(5))SELECT A.CHANGEGUID,A.STOREID,A.TERMINALID,A.TABLENAME,A.ROWRECID,A.ROWGUID,A.CHANGETYPE,A.CHANGEDATE,A.CHANGETIME,A.REPLICATIONCOUNTERFROMORIGIN,A.REPLICATED,A.ROWSTATUS,A.RECVERSION,A.RECID,A.ROWDATA FROM GM_REPLPOSDATACHANGES A WHERE (DATAAREAID=@P1)

Когда он выполняется медленно фрагментация индексов не превышает 5%, статистика обновлена 2 часа назад.
При этом при перестроении индексов проблема уходит, но и вроде бы при обновлении статистики она исчезает.
Вот его план запроса:
22 янв 16, 12:28    [18715108]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
А можно весь запрос привести? Насколько мне память не изменяет - это Вы пытаетесь курсор заполнить.
22 янв 16, 12:30    [18715121]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
что это за блок в плане запроса

Мне кажется, что вы привели не тот запрос или вообще произвольный кусок срипта

gerogekochkin
"Clustered index Insert (CWT_PrimaryKey)"?

BOL
The Clustered Index Insert Showplan operator inserts rows from its input into the clustered index specified in the Argument column. The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. If Clustered Index Insert has no children for insert values, the row inserted is taken from the Insert operator itself.

Clustered Index Insert is a physical operator.
22 янв 16, 12:31    [18715124]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
AlanDenton, запрос, который я привел - это то, что мне выдает процедура WhoIsActive.
Переменная DATAAREAID='dat'
22 янв 16, 12:35    [18715151]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
AlanDenton, запрос, который я привел - это то, что мне выдает процедура WhoIsActive.

И что с того, что вам какая то процедура выдает часть запроса/скрипта ?
22 янв 16, 12:37    [18715162]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Glory, я гуглил cwt_primarykey. Видел, что это касается tempdb. Мое предположение - устаревшая статистика, поэтому идет слив в tempdb.
Мне интересно верно ли предположение и, если нет, то как интерпретировать такой план.
22 янв 16, 12:39    [18715185]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
Мое предположение - устаревшая статистика, поэтому идет слив в tempdb.

Предположение чего ?
У вас показанный план не соответствует тексту запроса, а вы какие-то предроложения выдвигаете
22 янв 16, 12:41    [18715193]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Glory, говорю к тому, что это именно тот запрос и именно тот план, относительно которых у меня возник вопрос.
22 янв 16, 12:41    [18715197]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Glory,

К сообщению приложен файл. Размер - 67Kb
22 янв 16, 12:43    [18715209]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
говорю к тому, что это именно тот запрос и именно тот план, относительно которых у меня возник вопрос.

Вы тупите
У вас план и текст от разных запросов
Ваше приложение создает и работает с курсором, а не с запросом.
22 янв 16, 12:44    [18715211]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
Glory,

Картинка с другого сайта.

Не надо постить 100 раз одну и ту же картинку.
О этого на ней вместо куска скрипта не появится весть скрипт.
22 янв 16, 12:45    [18715219]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Glory, какие действия порекомендуете предпринять, чтобы прояснить ситуацию?
Из ваших констатаций не все ясно...
22 янв 16, 12:57    [18715303]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
Glory, какие действия порекомендуете предпринять, чтобы прояснить ситуацию?

Обратится к специалисту, который умеет пользоваться чем-то большим, что непонятная процедура WhoIsActive.
Например, Профайлером.
22 янв 16, 13:00    [18715324]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
gerogekochkin
Glory, какие действия порекомендуете предпринять, чтобы прояснить ситуацию?
Из ваших констатаций не все ясно...

у вас вообще какая из ее версий ? sp_WhoIsActive
22 янв 16, 13:25    [18715487]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ну всеж просто - откройте код процедуры ,найдите временную таблицу там с кластерным индексом и инсерт который в нее вставляет данные......
22 янв 16, 13:29    [18715515]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Glory, именно поэтому я сюда и обратился - за помощью.
Если вы не можете адекватно отвечать, к чему все это?
22 янв 16, 13:35    [18715579]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
gerogekochkin
Glory, именно поэтому я сюда и обратился - за помощью.
Если вы не можете адекватно отвечать, к чему все это?

потому ,что вы код процедуры даже не посмотрели.....
22 янв 16, 13:39    [18715608]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
gerogekochkin
именно поэтому я сюда и обратился - за помощью.

Вы не обратились за помощью
Вы вкинули сюда ошметки того, что вы посчитали планом и запросом.
И теперь с претензиями вставли в позу - решайте мою проблему по тому, что я дал и в том стиле, что я хочу

Если вы не умеете адекватно реагировать на просьбы предоставить достоверные данные, то к чему вы создали тему ?
22 янв 16, 13:46    [18715676]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
gerogekochkin
Вопрос: что это за блок в плане запроса "Clustered index Insert (CWT_PrimaryKey)"? При его появлении в плане достаточно ли обновить статистику?
Это формируется рабочая таблица (CWT - Cursor Work Table) для курсора в tempdb. Статистика тут ни при чем.

Лучше выложите актуальный план в формате sqlplan.
22 янв 16, 13:52    [18715735]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
Судя по плану, у вас случился банальный parameters sniffing - план был построен и закеширован для значения в @P1 для которого запрос возвращает небольшое количество строк.
Для другого значения количество возвращаемых строк возросло многократно и план стал неэффективным.
Обновление статистики или перестроение индекса делает план неактуальным и запрос компилируется заново.
22 янв 16, 13:59    [18715804]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
gerogekochkin
какие действия порекомендуете предпринять, чтобы прояснить ситуацию?
Запустите профайлер, посмотрите действия, выполняемые на сервере.
Потом интересующие запросы, процедуры, выполните в SSMS, и тоже с запуском профайлера, но уже более подробного, с входом внутрь процедур и показом планов.
Запросы и планы можете показать здесь. По этим данным, возможно, получится что то понять и сказать.

Сейчас вы действительно показываете обрезок запроса. Это легко проверить, выполнив его - он выдаст синтаксическую ошибку.
22 янв 16, 14:43    [18716165]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
Crazy_Driver
Member

Откуда: α2000 = 14ч39м36с,5, δ2000 = -60°50'02"
Сообщений: 876
Судя по всему, это код, который генерирует аксапта. А там все на курсорах и АПИ.
22 янв 16, 14:51    [18716223]     Ответить | Цитировать Сообщить модератору
 Re: План запроса  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
alexeyvg,
profiler выдал мне вот что:
declare @p1 int
set @p1=1073777809
declare @p2 int
set @p2=180338803
declare @p5 int
set @p5=4097
declare @p6 int
set @p6=1
declare @p7 int
set @p7=-1
exec sp_cursorprepexec @p1 output,@p2 output,
N'@P1 nvarchar(5)',N'SELECT A.CHANGEGUID,A.STOREID,A.TERMINALID,A.TABLENAME,A.ROWRECID,A.ROWGUID,A.CHANGETYPE,A.CHANGEDATE,A.CHANGETIME,A.REPLICATIONCOUNTERFROMORIGIN,A.REPLICATED,A.ROWSTATUS,A.RECVERSION,A.RECID,A.ROWDATA FROM GM_REPLPOSDATACHANGES A WHERE (DATAAREAID=@P1)',@p5 output,@p6 output,@p7 output,N'dat'
select @p1, @p2, @p5, @p6, @p7


К сообщению приложен файл. Размер - 57Kb
4 фев 16, 19:30    [18774508]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить