|
Откат транзакции идет очень медленно - SQL 2017 | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
04.07.19
✎
09:20
|
Документ на 2000 строк
соответственно записей в РС столько же ошибка - дублирование записи - и откат транзакции минут на 30 с блокировкой всей таблицы РС, если набор без ошибок - запись за пару секунд началось после переезда с SQL 2008 на 2017 что настроить? |
|||
1
Cyberhawk
04.07.19
✎
09:22
|
Не допускать дублирование (надежную проверку до начала записи) сделать не предлагать?
|
|||
2
RomaH
naïve
04.07.19
✎
09:25
|
профайлер для процесса:
https://dl.dropboxusercontent.com/s/ts6ukcn27yugvy1/2019-07-04_09h24_01.png?dl=0 |
|||
3
RomaH
naïve
04.07.19
✎
09:25
|
(1) хотелось бы понять почему так
можно словить аналогичную на других записях |
|||
4
vicof
04.07.19
✎
09:26
|
А запись случайно не с помощью менеджеразаписи идет?
|
|||
5
RomaH
naïve
04.07.19
✎
09:28
|
(4) в (0) наврал
основной набор записывается набором но есть небольшие таблицы которые пишу менеджерами э-эх
|
|||
6
RomaH
naïve
04.07.19
✎
09:30
|
еще раз акцентирую:
на 2008 серевере долгого отката не наблюдалось - проблема появилась после переtзда на новый сервер (железо, ось, SQL) |
|||
7
yavasya
04.07.19
✎
09:31
|
(4) Бро, а менеджер записи если не ошибаюсь блокирует всю таблицу , а набор это управляемая блокировка?
|
|||
8
RomaH
naïve
04.07.19
✎
09:34
|
режим управления блокировкой для конфы - управляемый
для РС тоже попробую менеджеры убрать.. |
|||
9
yavasya
04.07.19
✎
09:34
|
(5) так ты набор в цикле записываешь, поэтому. А зачем тебе все раздувать в одну транзакцию ? небось еще по РН делает движения и под другим таблицам. Сделай после записи подписку на событие.
|
|||
10
yavasya
04.07.19
✎
09:35
|
(8) если упп, то в совместимости, хз, какая конфа?
|
|||
11
RomaH
naïve
04.07.19
✎
09:35
|
(10) БСП
|
|||
12
yavasya
04.07.19
✎
09:40
|
(11) библиотека стандартных подсистем?)
|
|||
13
RomaH
naïve
04.07.19
✎
09:40
|
(9) я уточню - но код с записью набора в цикле устаревший и уже по условию не выполняется
Пока ВыборкаМестРаботы.Следующий() Цикл Если ВыборкаМестРаботы.Регистратор = Null Тогда//Записей похожих нет Продолжить; КонецЕсли; Если ВыборкаМестРаботы.ПредыдущаяЗапись Тогда НаборЗаписей = РегистрыСведений.НомерникПолисов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Установить(ВыборкаМестРаботы.Регистратор); НаборЗаписей.Прочитать(); ТаблицаДвижений = НаборЗаписей.Выгрузить(); МассивСтрокКУдалению = ТаблицаДвижений.НайтиСтроки(Новый Структура("МестоРаботыСсылка",ВыборкаМестРаботы.МестоРаботыСсылка)); Для Каждого СтрокаТЧ Из МассивСтрокКУдалению Цикл ТаблицаДвижений.Удалить(СтрокаТЧ); КонецЦикла; НаборЗаписей.Загрузить(ТаблицаДвижений); НаборЗаписей.Записать(); Иначе МассивМестРаботыПоКоторымНеНужныДвижения.Добавить(ВыборкаМестРаботы.МестоРаботыСсылка); КонецЕсли; КонецЦикла; либо просто в цикл не заходит, либо null Пока ВыборкаМестРаботы.Следующий() Цикл Если ВыборкаМестРаботы.Регистратор = Null Тогда//Записей похожих нет Продолжить; КонецЕсли; но еще раз - скорость записи меня устраивает вопрос - почему откат транзакции стал долгим пользователь жмет "провести" через 3 секунды получает отказ по причине дублирования открывает другой док - и на нем получает блокировку - в соединениях висит Захвачено СУБД 1 500 000 профайлер выше |
|||
14
RomaH
naïve
04.07.19
✎
09:40
|
(12) да - это самописка
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |