Имя: Пароль:
1C
1С v8
Конфликт блокировок на SQL
0 Dooro
 
02.10.18
09:22
База на SQL сервере , стоят РЕСПОСы для торговой сети. Где то с середины лета начались конфликты блокирововок. Может подскажите в какую сторону рыть?
1 Мандалай
 
02.10.18
09:31
sql.ru
2 scanduta
 
02.10.18
09:32
Ну анализируй ожидания на блокировках. Какими запросами образуется и почему.
3 Мандалай
 
02.10.18
09:39
Ну или Технологический Журнал настрой, может помочь.
На ИТС есть подробное описание настройки и принципа работы.
4 Мистикан
 
02.10.18
09:46
оперативно:
С помощью консоли кластера серверов. Показывает Кто кого заблокировал, длительность блокировки, гранулярность.

С помощью монитора активности. Показывает кто кого заблокировал (id сеансов),какой ресурс ,если конфигурация в автоматическом режиме, то можно увидеть и текст запроса на языке SQL, гранулярность, режим(тип блокировки).
И неоперативно

SQL profiler. С помощью фильтра lock acquired> 1мс; (ресурс, длительность, режим,гранулярность,  id кого забокировали.
5 Dooro
 
02.10.18
10:04
https://fex.net/411658612621
Вот скриншот. Если есть мысли , подскажите.
6 Vadim_37
 
02.10.18
10:44
статистику часто обновляете?
7 Vadim_37
 
02.10.18
10:46
последовательность партионного учета подтягиваете?
8 Dooro
 
02.10.18
10:49
последовательность не подтягиваем.
Статистику обновить. Это где.?
9 Vadim_37
 
02.10.18
10:55
(8) Именно поэтому и проблемы с запросом к регистру партий.
Статистика обновляется в SQL.
10 Spieluhr
 
02.10.18
11:02
(5) На картинке дедлок у вас, а не ожидания на блокировке
11 Dooro
 
02.10.18
11:02
восстановить последовательность?
12 Dooro
 
02.10.18
11:03
что такое дедлок
13 Spieluhr
 
02.10.18
11:05
(12) штука неприятная и непростая в диагностике, погуглите, теорию писать не буду здесь
14 Spieluhr
 
02.10.18
11:07
причем дедлок возникает в СУБД судя по описанию ошибки
15 Dooro
 
02.10.18
11:11
в базе ? Могут быть это злонамеренные действия. В теории я это допускаю. Какие то изменения могли быть произведены.
16 Dooro
 
02.10.18
11:11
потому что работала раньше нормально.
17 Salimbek
 
02.10.18
11:17
(15) Это 100% злонамеренные действия. Не обновлять статистику - это чистое зло со стороны адимнистратора БД )))
18 Spieluhr
 
02.10.18
11:20
(16) если спеца по этой теме у вас нет, попробуйте самое простое - обновлять статистику и чистить процедурный кэш на SQL
19 Dooro
 
02.10.18
11:23
статистика обновляется и процедурный кеш чистится. я спросил у нашего адимина. Каждую ночь.
20 Dooro
 
02.10.18
11:30
ДАА! Только что уточнили. Не обновляется статистика и не чистится кеш. Попробуем. это делать. Поможет не поможет, посмотрим. Спасибо!
21 Dooro
 
02.10.18
11:37
Если можно описать процедуру очистку процедурного кеша. это как и где.
22 Vadim_37
 
02.10.18
11:54
DBCC FREEPROCCACHE
http://www.gilev.ru/forum/viewtopic.php?f=17&t=358
Вот зачем мне эти знания? У вас же админ есть.
23 Vadim_37
 
02.10.18
11:56
цитата с ИТС:
Статистика может обновляться настолько часто, насколько это необходимо.
Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем.
В реально работающей системе разные таблицы требуют различной частоты обновления статистик. Путем анализа планов запроса можно установить, какие таблицы больше других нуждаются в частом обновлении статистик, и настроить две (или более) различных регламентных процедуры: для часто обновляемых таблиц и для всех остальных таблиц.
24 Dooro
 
02.10.18
12:11
Спасибо всем. Будем пробовать.
25 Солберецкий забор
 
02.10.18
12:29
(24) у вас ничего не получится
26 Dooro
 
02.10.18
12:56
почему
27 Glup0sti
 
02.10.18
13:08
28 whitedi
 
02.10.18
13:27
тоже в сетевой рознице как-то столкнулись с резким замедлением и блокировками sql в какой-то момент.
Уже не вспомню, помогал ли рестарт sql.
Реально помогало dbcc opentran - как правило "start time" не должно быть больше 3 минут и kill[[id процесса].
А вообще в этой статье описано подробно http://catalog.mista.ru/public/277252/.
29 H A D G E H O G s
 
02.10.18
13:36
Взаимоблокировка разруливается как 2 пальца.
Но см (25).
30 Dooro
 
02.10.18
13:40
я посмотрел код напичкан НачатьТранзакцию() везде.
Как же разрулить взаимоблокировку.
31 Salimbek
 
02.10.18
13:47
(30) Например, ускорить выполнение запросов за счет обновления статистики.
32 Dooro
 
02.10.18
13:49
это будет делаться каждый день. Я посмотрел - стоит режим блокировки - управляемый. на конфе
33 Glup0sti
 
02.10.18
14:05
(32) Управляемые, на то и управляемые, что их ставить самому надо. У тебя один путь - найти и устранить по предложенной методике или (25).  
Возможно(не имея никаких фактов, пальцем в небо), при переводе конфы с автоматических блокировок в партионном учете забыли БлокироватьДляИзменения = Истина.
34 Dooro
 
02.10.18
14:52
В модуле ОбщийМодуль.УправлениеЗапасамиПартионныйУчет ,
Который вызывает блокировки, действительно нет ни одной записи БлокироватьДляИзменения = Истина.
Да и вообще во всей конфе нет.
Я подозреваю, что база была ранее файловая, где это не нужно было. Теперь скл
35 Dooro
 
02.10.18
14:54
при том что регистри накопления например партии товаров имеют разрешить разделение итогов = истина.
36 Glup0sti
 
02.10.18
16:18
(34) (35)
Вот они фактики:
1. Нет БлокироватьДляИзменения
2. Есть разделение итогов

Еще раз...это, чтобы гарантировано понять в чем проблема
https://ausevich.ru/ekspert/blokirovka-indeksa-na-urovne-stranits-prakticheskoe-rassledovanie-vzaimoblokirovki/

А это, чтобы проверить/исправить, то что понаписано в конфе
https://its.1c.ru/db/metod8dev#content:5839:hdoc
37 Dooro
 
02.10.18
17:00
а если я просто переключу режим блокировки в конфе с управляемой на автоматический ?
38 Glup0sti
 
02.10.18
17:13
(37)
Точно придется комментировать Новый БлокировкаДанных
39 rphosts
 
02.10.18
17:55
(5) конфа нетиповая?
40 rphosts
 
02.10.18
17:57
дидлок - следствие разного порядка захвата ресурсов. Измените порядок захвата ресурсов - чаще всего этого уже хватает.
41 rphosts
 
02.10.18
17:58
(37) не забудь сделать бэкап - к нему откатываться придется
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.