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

Откуда:
Сообщений: 4
Куда хоть посмотреть? Всю голову сломал... База 1Совая, загрузка из внешней системы, 1Совой логикой договоров контрагентов. Логика прямая, как рельс. Тормозит именно Записать(). Поймал профайлером, duration прыгает от 80-90 до 200-300 при вставке 1 записи. В менеджмент студии тот-же запрос, duration от 3 до 5. Запрос вида:
exec sp_executesql N'INSERT INTO dbo._Reference87 (_IDRRef,_Marked,_IsMetadata,_OwnerIDRRef,_Code...
Тригеров нет, констрейнтов нет, таблица типовая 1Совая, создана 1С.
31 май 19, 20:02    [21899176]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
VitShvets
Поймал профайлером, duration прыгает от 80-90 до 200-300 при вставке 1 записи. В менеджмент студии тот-же запрос, duration от 3 до 5.
А CPU, Read, Wrtites разные?
Выполняется из одного места или из разных (в смысле, SSMS и клиент 1C)?
Пользователь, под которым коннект к сиквелу, одинаковый?
Протокол подключения одинаковый?
31 май 19, 21:39    [21899221]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
Владислав Колосов
Member

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

Если вместе со вставкой выполняется чтение, то вполне возможно. или конкурирующая вставка.
Можете в момент вставки запустить просмотр счетчиком производительности windows и понаблюдать за задержками на уровне файловой системы или самого сервера.
2 июн 19, 12:33    [21899751]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
VitShvets
Member

Откуда:
Сообщений: 4
alexeyvg
А CPU, Read, Wrtites разные?

Примерно одинаковые. CPU = 15, Reads =35, Writes=6. Ну в среднем, плюс минус.
alexeyvg
Выполняется из одного места или из разных (в смысле, SSMS и клиент 1C)?

Из разных. 1С запущена непосредственно на сервере, SSMS на моём рабочем.
alexeyvg
Пользователь, под которым коннект к сиквелу, одинаковый?

Пробовал и разные и одинаковые. Разные, оба админы.
alexeyvg
Протокол подключения одинаковый?

Одинаковый, TCP/IP.
Владислав Колосов
Если вместе со вставкой выполняется чтение, то вполне возможно. или конкурирующая вставка.

Я грешу на блокировки, надо только погуглить как их проще ловить.
Владислав Колосов
Можете в момент вставки запустить просмотр счетчиком производительности windows и понаблюдать за задержками на уровне файловой системы или самого сервера.

Попробую, пока других вариантов нет...
3 июн 19, 14:04    [21900494]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
1C Developer
Member

Откуда:
Сообщений: 65
VitShvets
Поймал профайлером, duration прыгает от 80-90 до 200-300 при вставке 1 записи. В менеджмент студии тот-же запрос, duration от 3 до 5. Запрос вида:
exec sp_executesql N'INSERT INTO dbo._Reference87 (_IDRRef,_Marked,_IsMetadata,_OwnerIDRRef,_Code...
Тригеров нет, констрейнтов нет, таблица типовая 1Совая, создана 1С.


Вы из 1С и из SSMS с одной и той же базой работаете?

И еще у Вас в 1С подписки на событие при записи данного справочника или общая для всех справочников?
3 июн 19, 14:54    [21900562]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
VitShvets
Я грешу на блокировки
Не обязательно блокировки. Ожидания надо анализировать.
sys.dm_os_waiting_tasks
sys.dm_exec_requests - столбец last_wait_type

Или установите себе sp_whoisactive
3 июн 19, 15:12    [21900593]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
VitShvets
Member

Откуда:
Сообщений: 4
[quot 1C Developer]Вы из 1С и из SSMS с одной и той же базой работаете?
Да. Собственно в SSMS я взял 1Совый запрос из профайлера, поменял _IDRRef на новый и добавил begin tran/rollback tran в начале/конце insert, для "не нарушения" целостности данных.
1C Developer
И еще у Вас в 1С подписки на событие при записи данного справочника или общая для всех справочников?

Не так и не так. Есть несколько подписок, связанных с данным справочником, но они сделаны на несколько видов справочников - договора, склады, Номенклатура и т.д.
invm
Или установите себе sp_whoisactive

Поставил, поймал запрос. Выдаёт "(51ms)PAGEIOLATCH_EX:DBName:1(*)". Гугл говорит о "проблемах с диском", что ооочень врятли, т.к. во первых база лежит на лютом дисковом массиве, ну и во вторых, с другими таблицами такого поведения не наблюдал.
3 июн 19, 21:00    [21900933]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
Владислав Колосов
Member

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

чтобы убедиться, проверьте среднее значение длины очереди диска.
3 июн 19, 21:24    [21900950]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
VitShvets
Примерно одинаковые. CPU = 15, Reads =35, Writes=6. Ну в среднем, плюс минус.
А duration?
3 июн 19, 22:06    [21900965]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
invm
VitShvets
Я грешу на блокировки
Не обязательно блокировки. Ожидания надо анализировать.
sys.dm_os_waiting_tasks
sys.dm_exec_requests - столбец last_wait_type

Или установите себе sp_whoisactive
Для таких коротких запросов лучше уж через Extended Events ну или ожидания сессии (sys.dm_exec_session_wait_stats), если версия позволяет.
3 июн 19, 22:46    [21900985]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
invm
VitShvets
Примерно одинаковые. CPU = 15, Reads =35, Writes=6. Ну в среднем, плюс минус.
А duration?
Про это же ТС сразу написал:
VitShvets
Поймал профайлером, duration прыгает от 80-90 до 200-300 при вставке 1 записи. В менеджмент студии тот-же запрос, duration от 3 до 5.
4 июн 19, 02:27    [21901056]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
Сруль.
Member

Откуда:
Сообщений: 121
Слушайте, я тут с совещательным правом голоса.
Просто не далее, как вчера меня рук-во прихватило за жабр-
завис сервер по работе с населением.
Есть у меня прога, которая, типа, для висяков.
И она показала, что, висяк на инсерте, да такой, что не горюй.
Табличка, что принимает инсерт оказалась 32 лимона записей.
Я её переименовал, создал такую-же, с такими же индексами
и, внимание, похожим праймери ки, т.к. два праймери ки с одинаковым именем не бывают.
Перетащил из бывшей два лимона последних записей, помножив их айдентити на -1, чтоб были
распозноваемы и не дублировались. Сервер взлетел.
Чо думаю. Кластерный праймери ки забодался пересчитываться на 32 лимонах.
Сосед по парте говорит надо было разбить на партишены.
Да мало ли где чего набо было бы. Чуство реальности терять не надо.
У системки есть хозяева-нехай думают, им за это платют.
А программка по висякам здесь,
типа.
https://sqlactiveprocess.blogspot.com
4 июн 19, 13:36    [21901505]     Ответить | Цитировать Сообщить модератору
 Re: Долгий INSERT  [new]
VitShvets
Member

Откуда:
Сообщений: 4
Владислав Колосов
проверьте среднее значение длины очереди диска.

В среднем 1.5 - от 0.5 до 2.5.
Mind
Для таких коротких запросов лучше уж через Extended Events ну или ожидания сессии (sys.dm_exec_session_wait_stats), если версия позволяет.

SQL 2016-й. Надо начать таки изучать что есть Extended Events и как оно работает...
Сруль.
Табличка, что принимает инсерт оказалась 32 лимона записей.

Таблица у меня чуть поскромнее, 18 миллионов.
4 июн 19, 14:43    [21901581]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить