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

Откуда:
Сообщений: 8
Есть 2 БД.
В одной изменение таблиц (insert/update/delete) не выполняется. Из нее только идет выборка с JOIN в другую БД, в которую как раз и идет наполнение данными. Там 3 таблицы, 2 из которых считываются в запросе и они же наполняются. Индексы только некластерные (ни одного кластерного индекса на этих двух таблицах).
Работа происходит примерно так:
1. Получил данные (select .... left join [second DB]);
2. Идет анализ полученных данных, формирование новых массивов данных, полученных в результате анализа, и наполнение 3 таблиц во второй БД ([second DB]). Добавление происходит через BULK-Insert по 50'000 строк за раз.
3. Снова выполняется пункт #1.

Так вот при выполнении пункта 1 у меня происходит очень долгий запрос. По началу такого не было. Видимо это связано с ростом индекса, но я не понимаю вот чего. Я добавил данные. Если функция программы продолжается, значит сервер вернул программе что "всё ОК", а это значит что и индекс он перестроил. Так если индекс перестроен, чего сервер так долго обрабатывает запрос и суспендид комманды? Картинку прикладываю (приложил бы текстом, но не знаю какой коммандой получить).

Вопрос вот в чем. Можно ли что-то сделать для того чтобы сервер не суспендил каждый запрос выборки (или суспендил но на меньшее время, потому что реально suspend долгий)? Или где хоть почитать про это? Или хотябы скажите как правильно гуглу этот вопрос задать, ведь я даже не знаю что искать.

К сообщению приложен файл. Размер - 16Kb


Сообщение было отредактировано: 21 дек 19, 23:13
21 дек 19, 23:12    [22046094]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Andy06
Можно ли что-то сделать для того чтобы сервер не суспендил каждый запрос выборки (или суспендил но на меньшее время, потому что реально suspend долгий)? Или где хоть почитать про это? Или хотябы скажите как правильно гуглу этот вопрос задать, ведь я даже не знаю что искать.

msdn
suspended = The session is waiting for an event, such as I/O, to complete.
21 дек 19, 23:23    [22046097]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Andy06
Member

Откуда:
Сообщений: 8
Так, ну я понял что проблема в ожидании завершения чего-то, вопрос чего именно?
В Wait Type (в мониторе активности) по долгу стоит pageiolatch_sh.
21 дек 19, 23:43    [22046103]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Andy06
Member

Откуда:
Сообщений: 8
Для тех, кто столкнется с такой же проблемой советую прочитать статью: https://www.sqlshack.com/handling-excessive-sql-server-pageiolatch_sh-wait-types/
22 дек 19, 01:17    [22046138]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Владислав Колосов
Member

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

SUSPEND это нехватка памяти, нехватка ядер. Кратковременный SUSPEND при параллелизме - это нормально. В обоих случаях недостаточно физических ресурсов. Либо настроены какие-то приоритеты, управление ресурсами или ещё что-то. Но это врят ли Ваш случай. Может быть "холодная" база. Надо детально разбираться - что и при каких условиях.
23 дек 19, 12:31    [22046758]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Любопытный гость
Member

Откуда:
Сообщений: 4
Владислав Колосов
Кратковременный SUSPEND при параллелизме - это нормально.
А можно ссылочку на подробности?
23 дек 19, 12:52    [22046767]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Владислав Колосов

SUSPEND это нехватка памяти, нехватка ядер.
Кратковременный SUSPEND при параллелизме - это нормально.
В обоих случаях недостаточно физических ресурсов.
Либо настроены какие-то приоритеты, управление ресурсами или ещё что-то.
Но это врят ли Ваш случай. Может быть "холодная" база.
Надо детально разбираться - что и при каких условиях.

что сразу нехватка-то.
достаточно повесить Sch-M на особо популярную таблицу,
как будет поезд из suspended
23 дек 19, 13:30    [22046811]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Любопытный гость
Владислав Колосов
Кратковременный SUSPEND при параллелизме - это нормально.
А можно ссылочку на подробности?

например More on CXPACKET Waits: Skewed Parallelism
23 дек 19, 13:33    [22046813]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7401
Любопытный гость,

немного проигрываете в ожидании синхронизации, но выигрываете в производительности в целом. Админов ожидания CX_PACKET обычно приводят в ужас своими цифрами и они радостно кричат вот почему сервер тормозит! Надо отключать параллелизм!
23 дек 19, 13:40    [22046822]     Ответить | Цитировать Сообщить модератору
 Re: Регулярный Suspend на select коммандах  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Владислав Колосов
Любопытный гость,

немного проигрываете в ожидании синхронизации, но выигрываете в производительности в целом. Админов ожидания CX_PACKET обычно приводят в ужас своими цифрами и они радостно кричат вот почему сервер тормозит! Надо отключать параллелизм!

сейчас его ещё и разделили +CXCONSUMER, так что теперь всё на них в топе :)
23 дек 19, 13:47    [22046835]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить