Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запрос 1с выводит cpu в 100 %  [new]
1с_userxxx
Guest
очень странная ситуация - никогда не видел такого еще. и не понятно почему запрос может вывести cpu в 100% - там же нет никаких бесконечных циклов. на сервере 2 сокета в каждом по два ядра. Если запрос начинает работать - то все ядра показывают 100% загрузки.
запрос такой

SELECT
T1.Fld7607_TYPE,
T1.Fld7607_RTRef,
T1.Fld7607_RRRef,
CAST(SUM((T1.Fld7618Turnover_ + T1.Fld7619Turnover_)) AS NUMERIC(38, 8))
FROM (SELECT
T2._Fld7607_TYPE AS Fld7607_TYPE,
T2._Fld7607_RTRef AS Fld7607_RTRef,
T2._Fld7607_RRRef AS Fld7607_RRRef,
CAST(SUM(T2._Fld7618) AS NUMERIC(33, 8)) AS Fld7618Turnover_,
CAST(SUM(T2._Fld7619) AS NUMERIC(33, 8)) AS Fld7619Turnover_
FROM _AccumRgTn7625 T2 WITH(NOLOCK)
WHERE (((EXISTS(SELECT
@P1 AS Q_001_F_000_
FROM _InfoRg6332 T3 WITH(NOLOCK)
WHERE (@P2 = T3._Fld6333_TYPE AND @P3 = T3._Fld6333_RTRef AND T2._Fld7605RRef = T3._Fld6333_RRRef) AND (T3._Fld6334RRef = @P4) AND (T3._Fld6335RRef IN (@P5, @P6, @P7)))))) AND (T2._Period < @P8 AND ((((T2._Fld7605RRef IN (@P9)) AND (T2._Fld7607_TYPE = @P10 OR T2._Fld7607_TYPE = @P2 AND T2._Fld7607_RTRef + T2._Fld7607_RRRef IN
(SELECT
T4._INVALUELISTTRef + T4._INVALUELISTRRef AS INVALUELISTCRef
FROM #tt35 T4 WITH(NOLOCK)
WHERE CASE WHEN T4._INVALUELISTTRef IS NOT NULL THEN @P2 END IS NOT NULL AND T4._INVALUELISTTRef IS NOT NULL AND T4._INVALUELISTRRef IS NOT NULL))) AND (NOT ((((T2._Fld7608RRef IN (@P11, @P12, @P13, @P14, @P15, @P16, @P17, @P18, @P19, @P20)))))))))
GROUP BY T2._Fld7607_TYPE,
T2._Fld7607_RTRef,
T2._Fld7607_RRRef
HAVING (CAST(SUM(T2._Fld7618) AS NUMERIC(33, 8))) <> @P21 OR (CAST(SUM(T2._Fld7619) AS NUMERIC(33, 8))) <> @P21) T1
GROUP BY T1.Fld7607_TYPE,
T1.Fld7607_RTRef,
T1.Fld7607_RRRef

может кто сталкивался или может объяснить почему так происходит?
27 май 13, 19:20    [14356001]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
очень странная ситуация - никогда не видел такого еще. и не понятно почему запрос может вывести cpu в 100%


Гм... Многих, как раз наоборот мучает вопрос: "Почему мой запрос не грузит CPU на 100%".

автор
там же нет никаких бесконечных циклов


Это Вы в плане выполнения запроса увидели?
27 май 13, 19:33    [14356026]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
komrad
Member

Откуда:
Сообщений: 5252
1с_userxxx,

tablescan + parallelizm

imho

надо смотреть план запроса и версию сиквела
27 май 13, 21:15    [14356218]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
1с_userxxx
Guest
Уважаемый pkarklin, вы можете привести пример запроса - который бы вывел cpu в 100%?


план не получается поймать - он не кэшируется, а завершения запроса не могу дождаться.

И как может в плане селекта быть бесконечный цикл?
28 май 13, 10:34    [14357579]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
Glory
Member

Откуда:
Сообщений: 104760
1с_userxxx
план не получается поймать - он не кэшируется, а завершения запроса не могу дождаться.

есть еще предварительный план

1с_userxxx
И как может в плане селекта быть бесконечный цикл?

Вы сами придумали какой то термин и теперь требуете доказать его наличие/отсутствие.
28 май 13, 10:41    [14357632]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
1c_userxxx
Guest
komrad,

версия SQL Server 2008 R2 Service Pack 1

попробуйте на какой-нибудь большой табличке запустить

SELECT COUNT_BIG(x)
FROM dbo.BigTable with(index(0))

cpu повысится - но оно не будет 100%
28 май 13, 10:48    [14357702]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
komrad
Member

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

версия SQL Server 2008 R2 Service Pack 1

попробуйте на какой-нибудь большой табличке запустить

SELECT COUNT_BIG(x)
FROM dbo.BigTable with(index(0))

cpu повысится - но оно не будет 100%


несомненно

как насчет плана? можно estimated, а можно и реальный взять :

select top 10 
	  db_name(deqp.dbid) [DB]
	, object_name(deqp.objectid,deqp.dbid) [Object]
	, dest.text
	, deqp.query_plan
from sys.dm_exec_query_stats deqs 
cross apply sys.dm_exec_sql_text (deqs.sql_handle) dest
cross apply sys.dm_exec_query_plan (deqs.plan_handle) deqp
where dest.text like 'НАЧАЛО ЗАПРОСА%'
28 май 13, 14:44    [14359616]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
1с_userxxx
Guest
komrad,
этот запрос достает кэшированный план - но план этот он не кэшируется.
а estimated plan придется попробовать, хоть и гемероно это для 1совских запросов - придется временную таблицу генерить #tt35 и заполнять её
28 май 13, 15:21    [14359898]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
Glory
Member

Откуда:
Сообщений: 104760
1с_userxxx
этот запрос достает кэшированный план - но план этот он не кэшируется.

sys.dm_exec_query_plan

Returns the Showplan in XML format for the batch specified by the plan handle. The plan specified by the plan handle can either be cached or currently executing.
28 май 13, 15:23    [14359908]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
komrad
Member

Откуда:
Сообщений: 5252
1с_userxxx
komrad,
этот запрос достает кэшированный план - но план этот он не кэшируется.

с чего это он не кэшируется?
сиквел запрос наугад выполняет? если запрос работает долго, то хотя в течение его работы план должен быть в кэше
28 май 13, 16:11    [14360313]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
1с_userxxx
Уважаемый pkarklin, вы можете привести пример запроса - который бы вывел cpu в 100%?


Ну, наверно, если постараться, то можно что-нибудь наваять. Но стараться, обычно, приходиться в другую "сторону".

1с_userxxx
план не получается поймать


Чем Вы его ловите? Поставьте себе http://www.microsoft.com/en-us/download/details.aspx?id=22602 и кликнув на активном запросе Вы получите план.

1с_userxxx
И как может в плане селекта быть бесконечный цикл?


План покажет, что там на самом деле.
28 май 13, 20:37    [14361731]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
INVALUELISTCRef
Guest
1с_userxxx,

автор
AND T2._Fld7607_RTRef + T2._Fld7607_RRRef IN
(SELECT
T4._INVALUELISTTRef + T4._INVALUELISTRRef AS INVALUELISTCRef
FROM #tt35


ну, как бы, есть нюансы.
28 май 13, 21:32    [14361861]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
1с_userxxx
Guest
Парни - я извиняюсь, забыл одну деталь сообщить запрос этот выполняется внутри sp_executesql - поэтому я не вижу план в sys.dm_exec_cached_plans - но план удалось найти в кэше поискам по запросу. вот сам план

К сообщению приложен файл (plan.sqlplan - 87Kb) cкачать
29 май 13, 12:09    [14363903]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
Glory
Member

Откуда:
Сообщений: 104760
1с_userxxx
вот сам план

У вас там не бесконечный цикл, а просто два нестедлуп цикла по 800 000 каждый
29 май 13, 12:12    [14363928]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
Гость333
Member

Откуда:
Сообщений: 3683
1с_userxxx,

Вот так ваш план выглядит в SQL Sentry Plan Explorer. Несколько сотен миллионов нестед лупов загрузят под завязку любой процессор.

К сообщению приложен файл. Размер - 77Kb
29 май 13, 12:23    [14364010]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
1с_userxxx
Guest
да спасибо, увидел - тему можно закрывать.
29 май 13, 12:25    [14364019]     Ответить | Цитировать Сообщить модератору
 Re: запрос 1с выводит cpu в 100 %  [new]
komrad
Member

Откуда:
Сообщений: 5252
1с_userxxx
да спасибо, увидел - тему можно закрывать.

parallelism и давал 100%ЦПУ ;)
29 май 13, 14:24    [14364780]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить