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

Откуда:
Сообщений: 424
Имеется вот такой запрос

exec sp_executesql N'DELETE FROM T1
FROM _AccumRg23276 T1
WHERE T1._RecorderTRef = @P1 AND T1._RecorderRRef = @P2',N'@P1 varbinary(4),@P2 varbinary(16)',0x0000A704,0x944D00505688064611E62E6CE25051B3



И вот такая картинка в профайлере (картинка прикреплена).

Подскажите что тут можно оптимизировать? В какую сторону копать?

К сообщению приложен файл. Размер - 105Kb
29 июн 16, 16:04    [19350715]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
Допускаю что здесь нельзя ничего оптимизировать.
Просто этот запрос является самым длительным среди всех запросов.
Может в другом месте копать?

К сообщению приложен файл. Размер - 127Kb
29 июн 16, 16:09    [19350749]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
leonix
Может в другом месте копать?
Ожидания анализируйте.
Это не нормально, когда Duration настолько превосходит CPU.
29 июн 16, 16:42    [19350960]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
Ожидания анализируйте.

Подскажите как это делается?
29 июн 16, 17:03    [19351080]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
i-i
Guest
там table spool, я так понимаю, в таблице есть форины на поля етой же таблицы?

можно попробовать удалять небольшими порциями, либо применить merge, может помочь
29 июн 16, 17:11    [19351124]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
leonix
Подскажите как это делается?
Выполните запрос вот отсюда http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/ и покажите результат.
29 июн 16, 17:25    [19351189]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
leonix
Ожидания анализируйте.

Подскажите как это делается?
Смотрите текущие блокировки, используя sp_who2
Может, там постоянно какая то джоба запускается, которая всех лочит?

Поток запросов, для которых CPU<<Duration, говорит о серьёзных проблемах с блокировками, или с IO.

Может, просто железо медленное? Посмотрите в ресурс-мониторе, какие очереди к дискам, и какой Responce Time.

И сделайте запрос трейса без order by Duration, посмотрите, там вообще много таких запросов, с большим Duration? Или это редкость?
i-i
там table spool, я так понимаю, в таблице есть форины на поля етой же таблицы?

можно попробовать удалять небольшими порциями, либо применить merge, может помочь
Ну вот, возмём 5й запрос.
Он читает 15 тыщ страниц, пишет 161 страницу.
Как то много для этих ресурсов 3 секунды...
Хотя если данные сильно фрагментированы, и эти 15 тыщ страниц разбросаны по диску...

leonix, Да, ещё нужно посмотреть использование кеша.
Может, тупо разрослась база, и часто используемые данные быстро вытесняются из кеша? И поэтому всё медленно?
29 июн 16, 17:30    [19351219]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
i-i
Guest
уважаемый ТС, по косвенным признакам, у вас блокировка идет.

16хх строки, затем 3821хх - анализируйте трассу
обновите статистику, ребилдните индексы если необходимо
29 июн 16, 17:44    [19351278]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
leonix,
- и сколько в этом регистре записей?
- кластерный индекс по полю какого типа построен?
29 июн 16, 17:53    [19351319]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
i-i
там table spool, я так понимаю, в таблице есть форины на поля етой же таблицы?

можно попробовать удалять небольшими порциями, либо применить merge, может помочь


Ключей вообще нет у таблиц. Запрос не могу переделать, система генерит. Могу добавлять индексы, менять железо и т.д.
30 июн 16, 09:06    [19353022]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
invm
leonix
Подскажите как это делается?
Выполните запрос вот отсюда http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/ и покажите результат.


Вот результат. Поясните что выдает этот запрос и на какие параметры следует обратить внимание?

К сообщению приложен файл. Размер - 118Kb
30 июн 16, 09:07    [19353028]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
alexeyvg
leonix
пропущено...

Подскажите как это делается?
Смотрите текущие блокировки, используя sp_who2
Может, там постоянно какая то джоба запускается, которая всех лочит?

Поток запросов, для которых CPU<<Duration, говорит о серьёзных проблемах с блокировками, или с IO.

Может, просто железо медленное? Посмотрите в ресурс-мониторе, какие очереди к дискам, и какой Responce Time.

И сделайте запрос трейса без order by Duration, посмотрите, там вообще много таких запросов, с большим Duration? Или это редкость?
i-i
там table spool, я так понимаю, в таблице есть форины на поля етой же таблицы?

можно попробовать удалять небольшими порциями, либо применить merge, может помочь
Ну вот, возмём 5й запрос.
Он читает 15 тыщ страниц, пишет 161 страницу.
Как то много для этих ресурсов 3 секунды...
Хотя если данные сильно фрагментированы, и эти 15 тыщ страниц разбросаны по диску...

leonix, Да, ещё нужно посмотреть использование кеша.
Может, тупо разрослась база, и часто используемые данные быстро вытесняются из кеша? И поэтому всё медленно?


Блокировок мне кажется не должно быть, т.к. я один в базе и запросы выполняются последовательно. Джобов тоже нет.
Подозреваю что проблема с дисковой подсистемой.
СКЛ сервер на виртуальной машине, подозреваю что хостовая система тупит. Доступа до хостовой нет, а показатели виртуальной машины не отражают реальной ситуации.
У всех запросов большой duration.
База 200 Гб. Как проверить использование кэша?
30 июн 16, 09:13    [19353046]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
i-i
уважаемый ТС, по косвенным признакам, у вас блокировка идет.

16хх строки, затем 3821хх - анализируйте трассу
обновите статистику, ребилдните индексы если необходимо


Ребилды делал, статистику обновлял.
30 июн 16, 09:14    [19353047]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
Дедушка
leonix,
- и сколько в этом регистре записей?
- кластерный индекс по полю какого типа построен?


- 13 110 286 записей в этой таблице

К сообщению приложен файл. Размер - 38Kb
30 июн 16, 09:32    [19353096]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
o-o
Guest
leonix
Вот результат. Поясните что выдает этот запрос и на какие параметры следует обратить внимание?

ваши ожидания говорят только о том,
что вы сервер профайлером доканали.
первые два ожидания у вас перешибли все, и это профайлер.
нельзя же такой мониторинг устраивать, что он перешибает всю юзерскую деятельность.
----
а следующие 2 ожидания это медленные диски.
и если заткнуть профайлер, наверное эти два займут первые места с офигительными процентами.
30 июн 16, 10:22    [19353267]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
leonix
Подозреваю что проблема с дисковой подсистемой.
СКЛ сервер на виртуальной машине, подозреваю что хостовая система тупит. Доступа до хостовой нет, а показатели виртуальной машины не отражают реальной ситуации.
Я уже писал про ресурс-монитор. Пусть машина виртуальная, но время операции к диску, и размер очереди не могут показываться неправильно.
Если всё хорошо, то время отклика должно быть порядка единиц мс, очередь порядка не больше единиц.

leonix
Блокировок мне кажется не должно быть, т.к. я один в базе и запросы выполняются последовательно.
Вы же не лично выполняете запросы, их выполняет приложение "1С"? Кто его знает, что оно там выполняет...
По любому лучше проверить, а не "думать".

leonix
База 200 Гб. Как проверить использование кэша?
А памяти сколько?
Проверить можно в перфмониторе, SQL Server, объект Buffer Manager

Или можно запросом:
select * 
from sys.dm_os_performance_counters 
where object_name = 'SQLServer:Buffer Manager'
30 июн 16, 10:26    [19353288]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
leonix
Member

Откуда:
Сообщений: 424
o-o
leonix
Вот результат. Поясните что выдает этот запрос и на какие параметры следует обратить внимание?

ваши ожидания говорят только о том,
что вы сервер профайлером доканали.
первые два ожидания у вас перешибли все, и это профайлер.
нельзя же такой мониторинг устраивать, что он перешибает всю юзерскую деятельность.
----
а следующие 2 ожидания это медленные диски.
и если заткнуть профайлер, наверное эти два займут первые места с офигительными процентами.


Интересно... Но у меня профайлер вообще закрыт был когда я этот запрос выполнял.
30 июн 16, 10:29    [19353307]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
o-o
Guest
leonix,
Это же кумулятивная статистика, собирается с момента рестарта.
Вы так натрэйсились, что теперь эти ожидания из топа придется долго вытравлять.
Можно статистику сбросить.
А можно прямо во время выполнения запроса смотреть sys.dm_os_waiting_tasks
Вот он только текущие ожидания покажет
30 июн 16, 10:55    [19353442]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как оптимизировать этот запрос  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
i-i
там table spool, я так понимаю, в таблице есть форины на поля етой же таблицы?


А причем здесь форины? Просто несколько индексов, и нужно удалить данные из всех. Разве нет?
30 июн 16, 11:55    [19353751]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить