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

Откуда:
Сообщений: 105
Добрый день.
Столкнулся с очень странной для меня ситуацией. Имеем параметризованный запрос, исполняется из студии мгновенно, обернутый в серверный курсор, так же исполняется мгновенно. Возвращает максимум 10 записей, по которым идет потом сумма. Но периодически возникают ситуации когда используя один и тот же план исполнения запроса, время его выполнения вырастает до 800мс. Разница между исполнениями только в нагрузке на CPU. Внешних факторов мешающих исполнению запроса не наблюдалось (сервер не нагружен, диски не нагружены, ожиданий ресурсов нет, индекс по которому идет выборка лежит в памяти). В общем практически идеальные условия выполнения.
Но не могу понять от чего он вдруг начинает выполняться по 500-800мс. На таблице включено сжатие ROW, индексы не сжаты.
MS SQL Server 2012 sp1 cu4.
В попытках получить время выполнения 800мс делал следующее:
- проверил окружение коннекта(кроме разницы в провайдере коннекта, ODBC vs .NET Provider, все однотипно)
- получил план запроса по sql_plan_handle и подставил в тестовый запрос план уже исполняемого "тупящего" запроса
- обернул тестовый запрос в серверный курсор, как и в случае с "тупящим" запросом (крутится в курсоре 5-10 тысяч раз)
В любом случае отрабатывало не более 1мс на запрос.
Может есть еще какие идеи как можно понять причину такого поведения sql сервера или хотя бы попробовать воспроизвести эту "ошибку". Заранее спасибо за помощь.

К сообщению приложен файл (cur_bad.xml - 21Kb) cкачать
14 мар 14, 12:52    [15723239]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить