Как я победил блокировки (deadlock)

28.09.09

Разработка - Математика и алгоритмы

Статья о том, как сделать работу нормальной, комфортной для пользователей, в большой базе с большим количеством пользователей.

Скачать файлы

Наименование Файл Версия Размер
Блокировки статья
.doc 441,00Kb
1617
.doc 441,00Kb 1617 Скачать
Блокировки
.epf 5,34Kb
461
.epf 5,34Kb 461 Скачать

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1753    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4415    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7451    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7848    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4443    fishca    13    

36

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8831    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    7797    dusha0020    8    

70
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 28.09.09 11:02 Сейчас в теме
Навскидку интересно. Надо бы опробовать.
2. Tiger77 69 28.09.09 11:19 Сейчас в теме
Очень хорошее описание, однозначно плюс
3. kazah 28.09.09 12:52 Сейчас в теме
Какой программой открывать статью?
4. sCHTASS 49 28.09.09 13:04 Сейчас в теме
За статью плюс!!! Будет полезной.
5. Minotavrik 1634 28.09.09 13:22 Сейчас в теме
6. anig99 2843 28.09.09 13:39 Сейчас в теме
Статья хорошая, но однобокая... Всё-таки, блокировки лучше начать лечить с SQL - нормальное отлаживание регламентных заданий, оптимизированые скрипты, разделение файлов БД по разным дискам и т.д... Поэтому советую переименовать статью, точнее уточнить - режим управляемых блокировок
7. Minotavrik 1634 28.09.09 13:51 Сейчас в теме
anig99 - у меня все регламентные задания настроены. Базы и логи на разных дисках. Серваки новые на каждом 16 гб. ОЗУ. Все как положено, только от блокировок deadlock это не спасает в часы пик юзеры вообще работать не могут. Просто по одной простой причине - последовательная выполнение транзакций, полная изоляция транзакций друг от друга. так что крути не крути а с блокировками в первую очередь нужно через 1с разбираться. Это я сам лично опробывал и имею хорошие результаты.
8. anig99 2843 28.09.09 13:55 Сейчас в теме
(7) сам себе противоречишь... сначала всё настроил для SQL, а потом уже за управляемые взялся... Как ни крути, но то, что при времени проведения документа в несколько минут не вылетает блокировка, пользователя не радует, а просто угнетает в меньшей степени. Просто по твоей статье все начнут врубать управляемые блокировки, хотя можно обойтись и SQL... По моему мнению управлеяемые блокировки - последнее средство, когда SQL достигает предела производительности.
9. Minotavrik 1634 28.09.09 14:09 Сейчас в теме
Да нифига в режиме автоматических блокировок 1с 8.1 работает как 1с 8.0. Т.е. по сути платформу 8.1 разработали для того, чтобы в ней могли работать одновременно много пользователей и колотить документы. Ты почитай книжку "1с предприятие от 8.0 к 8.1"

Проблема в том, что при проведении в автоматических блокировках накладывается режим блокировки разделяемый и если две транзакции пытаются захватить одни и те же данные у них это получается, после их обработки каждой из транзакций необходимо выполнить исключительную блокировку транзакций для записи этих данных. В итоге ни одна ни другая этого не может сделать без принудительного прекращения одной из них вот это и есть deadlock. В управляемых блокировках, это решается путем наложения исключительной блокировки данных. Я сам до последнего момента сомневался и поразился результатам. Про SQL я не спорю если у тебя не настроены регламентные задания это увеличит блокировки, но как бы ты их не настраивал ты их не решишь одим sql. У меня с 5 - 7 вечера 40 операторов колотят накладные по 50 - 200 позиций в каждой. А у тебя база какого размера? Сколько юзеров работают?
10. Minotavrik 1634 28.09.09 14:09 Сейчас в теме
а за управляемые я взялся потому, что результата не было.
13. anig99 2843 28.09.09 14:39 Сейчас в теме
120 гБ - 30-50 пользователей.
Проблем с текущим проведение нет никаких. Проблемы начинаются, когда начинают перепроводить задним числом, тогда начинает решать тюнингованность sql.
А вообще я и не говорю о том, что всё можно решить одним sql. Я говорю о том, что сначала нужно решить проблемы с sql, а потом уже делать управляемые блокировки...ну по крайней мере сделать управляемые, но не забыть про sql.
(10) другой вопрос... сколько времени на проведение одного документа уходит?
11. German 413 28.09.09 14:21 Сейчас в теме
Пересказ(Ctrl+C-Ctrl+V) Книги от 8.0 к 8.1.
Не рассмотрена проблема эскалации.

P.S. Блокировка на удаление движений нафиг не нужна.
Login2222222; vadver; MSensey; +3 1 Ответить
12. Minotavrik 1634 28.09.09 14:32 Сейчас в теме
Ну насколько помню я ссылки на книгу дал. И во всей статье на нее ссылаюсь.

Не рассмотрена проблема эскалации - я что то не понял там, что в заголовке статьи написано ЭСКАЛАЦИЯ БЛОКИРОВОК.

Это вообще отдельная большая тема.

Пишешь, на русский язык для людей переводишь, с примерами код готовый выкладываешь, а народ еще фукает и говрит не рассмотрена проблема такая то, я что к тебе на защиту диплома пришшел, не нравится не бери.
ybatiaev; kernst; +2 1 Ответить
15. German 413 28.09.09 14:53 Сейчас в теме
(12)
В статье только сказано:
Поискав литературу в нете, нашел только книгу «1с предприятие от 8.0 к 8.1» начинаю судорожно изучать драгоценную главу «блокировки данных».

Вы очень не глубоко изучили этот вопрос и уже пишите слово "победил".
Вас почитают многие люди и сядут в лужу, то что у Вас все (3!!! документа) заработало просто счастливое стечение обстоятельств (мало данных и хорошее железо).
Не слово про измерения и индексы. Про разделяемый режим.




JinAir7460; userwar; rayastar; vadver; +4 1 Ответить
18. Арчибальд 2706 28.09.09 15:07 Сейчас в теме
(15) Автор не пишет "как победить". Он делится информацией о том, как "он победил" в конкретной ситуации. Так что дезинформацией здесь и не пахнет.
Но конечно же, право на минус у Вас имеется...
16. German 413 28.09.09 15:00 Сейчас в теме
(12) Я выразил свое мнение, нужно было поставить минус без комментариев? - тогда бы Вы еще больше расстроились.

я что к тебе на защиту диплома пришшел, не нравится не бери.

Вашу статью закачал обратно на IS. :D
14. Minotavrik 1634 28.09.09 14:48 Сейчас в теме
Мало, ожидание на блокировках по времени значительно снизилось, замерял по конфигурации ЦУП. Да и потом, ожидание возникает в случае, если один склад одна номенклатура. Ну по словам операторов, им настало счастье.
17. Minotavrik 1634 28.09.09 15:06 Сейчас в теме
Ну если 7 000 документов "Реализация товаров и услуг" в день это мало, тогда я не могу представить много.

А за основу я взял типовую конфигурацию 1с, насколько я знаю там оптимально это дело настроено (я про индексы говорю). Да и потом, про сядут в лужу, мне это помогло я решил поделится, еще никто не запрещал перед глобальными изменениями делать бекап.

Этот вопрос я изучал около 2-х месяцев и многое перепробывал с настройками sql, ощутимых результатов я не увидел.

3 документа это чудо?

1 - случайность
2 - свопадение
3 - закономерность.

Да и никого я не заставляю это делать. А инфы про управляемые блокировки в нете действительно мало. Книги 1с в свободное скачивание тоже не предостовляются.
19. German 413 28.09.09 15:17 Сейчас в теме
(17) забейте если для Вас это критично я могу аннулировать свой минус.
вы просто не описали достаточно Важные вещи, о которых вы наверняка знаете. Просто могли упомянуть о них в статье для затравки, а более подробно описать потом. И Ваши читатели бы знали что не все так просто.
20. Minotavrik 1634 28.09.09 15:26 Сейчас в теме
Я не стал читателей уводить в дебри, я сам, когда читал про эскалацию блокировок чуть мозг не сломал. Про это можно почитать тут http://www.gilev.ru/1c/81/lock/lock.htm но там не написано, конкретно если вы сделаете это, то настанет вам счастье.
21. Gilev.Vyacheslav 1910 28.09.09 17:24 Сейчас в теме
21 Неодназначное впечатление

1. Статья начиналась как собственное понимание, а закончилась как ЖКК, т.е. нечитаемо, ну или я лично не осилил.

2. Способ помещения задач на проведения под одного пользователя практикуется в УПП давно. Я так понял, вы работали только с УТ и поэтому об этом либо не знали, либо вводите нас в заблуждение

3. Раз уж упомянули мою статью, отвечу:
лучше всего бороться с эскалацией в MS SQL Server 2008, без всяких управляемых блокировок
КАК БОРОТЬСЯ - это мой хлеб, за деньги готов продать свои знания

4. Почему вы не разложили действия этого пользователя по нескольким фоновым процедурам для НЕПЕРЕСЕКАЕМЫХ данных?

5. Радует одно, вы пишите за бесплатно, тем самым заполняя информационный вакуум
я не считаю, раз есть книжки от 1С, значит их дублировать не надо
но пожалуйста не копипастите их, а пишите полностью СВОИ мысли
пусть они буду с ошибками, но Вы же сами и научитесь в результате

по крайней мере, у меня получается учиться таким образом

рейтинговать не буду ввиду изложенного
надеюсь без обид
22. Minotavrik 1634 28.09.09 18:29 Сейчас в теме
4. Почему вы не разложили действия этого пользователя по нескольким фоновым процедурам для НЕПЕРЕСЕКАЕМЫХ данных? вот эта интересная мысль.

2. Я работаю под SQL server 2005.
А Управляемыми блокировками решил воспользоваться, т.к. мне интересно показалось. А они чем то плохи? Просто не каждый знает все тонкости SQL server.

23. Gilev.Vyacheslav 1910 28.09.09 22:21 Сейчас в теме
(22) дело не в том, хороши они или плохи.
В УПП все Вами сказанное есть, в том числе управлемые блокировки.
С другой стороны, заново изобретать велосипед не зазорно, мысли не могут иметь копирайта.

Про эскалацию - управляемые блокировки не могут спасти от эскалации, просто эскалация будет не на субд, а на кластере 1С.
Не правильный, но самый простой метод, который могу озвучить бесплатно - дробление количества движений на более мелкие порции.
24. CheBurator 3119 29.09.09 03:05 Сейчас в теме
Софтпоинт недавно проводил семинар по гибким блокировкам и дедлокам, также они обещали выложить материалы семинара в открытый доступ - нудо бы их пнуть (?) за обещанное...
http://www.softpoint.ru/info_id103.htm
25. CheBurator 3119 29.09.09 03:11 Сейчас в теме
ууу. начал читать статью.. на первых же шагах - "траблы"
.."нарисовалась такая проблема как блокировки (deadlock), собственно о них в дальнейшем и пойдет речь. Блокировка - это информация о том, данный ресурс захвачен "кем то" для выполнения какого-то действия."
.
ну... из того, что я "усвоил" ;-) блокировки и дедлоки - это не одно и то же... Условно: блокировка - рано или поздно кончается, дедлок - это навсегда... ;-)
26. Gilev.Vyacheslav 1910 29.09.09 15:26 Сейчас в теме
народ, только не пинайте человека
он же СТАРАЛСЯ, а не продает что-то
27. CheBurator 3119 29.09.09 18:13 Сейчас в теме
(26) ни в коем же случае! любой кто знает больше чем "я" - уже вызывает уважение...
28. Gilev.Vyacheslav 1910 29.09.09 20:37 Сейчас в теме
29. sss999 48 30.09.09 07:00 Сейчас в теме
а я могу и просто так плюсы ставить,а корифеи зазнались уже :o ,там кто то написал что плюст а сам не поставил вот идиот
30. MSensey 49 30.09.09 10:03 Сейчас в теме
Цитата "нарисовалась такая проблема как блокировки (deadlock)"
Блокировки это не проблема.
Ожидание на блокировках это пробема и дедлоки это проблема.
Кроме того не понятно почему deadlock написано в скобках к словку "блокировки", дедлок и блокировка это разные вещи.
31. MSensey 49 30.09.09 10:19 Сейчас в теме
"... нам необходимо сохранить целостность данных, поэтому при проведении и обработки удаления проведения необходимо указать какие записи регистров блокировать".

Не понятно зачем при удалении проведения ставить УБ?
Рекомендую ознакомиться как сделаны УБ в УПП - она полностью переведена на УБ.
34. mosAdm 135 30.09.09 11:54 Сейчас в теме
(31)
>Рекомендую ознакомиться как сделаны УБ в УПП - она полностью переведена на УБ

Я что-то пропустил? Или речь идет о: "ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ,,истина,РежимПроведения);"

Вся типовая конфигурация УПП с работает в режиме блокировок "Автоматический"
35. MSensey 49 30.09.09 12:03 Сейчас в теме
(34) Нет речи о "ОбщегоНазначения.УдалитьДвиженияРегистратора". Причем оно здесь?

>> Вся типовая конфигурация УПП с работает в режиме блокировок "Автоматический"

По умолчанию да. Но с версии 1.2.15 появилась возможность включить управляемый режим.
36. mosAdm 135 30.09.09 12:08 Сейчас в теме
(35)
то что появилась возможность совсем не означает "она полностью переведена на УБ ".
Для перевода корпеть и корпеть программисту ручками.
Да и режим блокировок не зависит от релизов конфигурации.

Или о чем речь идет? может прямо пример из текста типовой УПП?
37. MSensey 49 30.09.09 12:35 Сейчас в теме
(36) Не понимаю, что я должен написать, чтобы Вы восприняли "она полностью переведена на УБ"?
В описании нового и в конференции написано, что можно установить режим управления блокировкой - "Управляемый".

Или Вы не верете тому, что она полностью переведена на УБ?
Ну что же оставайтесь при своем, а в тоже время многие уже установили в УПП этот режим и довольны.
38. mosAdm 135 30.09.09 12:54 Сейчас в теме
(37)
Действительно пропустил, спасибо.

Речь идет о процедуре общего модуля "УстановитьУправляемуюБлокировку", которая вызывается если изменён соответствующий флаг свойств конфигурации.
40. German 413 30.09.09 22:22 Сейчас в теме
(34) не полностью только склад(партии) и взаиморасчеты ну и еще по мелочи, к сожалению на производство у них сил не хватило.
41. mosAdm 135 01.10.09 08:56 Сейчас в теме
(40) Да, полностью согласен. И утверждение "она полностью переведена на УБ" будет соответствовать действительности когда в типовой демке в свойствах конфигурации будет установлен флаг "Управляемый".
Хотя должен признать, что программисту здорово облегчена работа и вместо "корпеть и корпеть" больше подходит "делай как я".
42. MSensey 49 01.10.09 13:45 Сейчас в теме
(40) А мог бы ты сказать в каком месте производства не хватает УБ?
43. German 413 01.10.09 14:14 Сейчас в теме
(42) Да все производственные регистры.
Может напишу расширенную статью по этому поводу в своем блоге.
32. MSensey 49 30.09.09 10:20 Сейчас в теме
Вот цитата К. Рупосова (1С):
Если очень коротко, то ответ такой: все будет в порядке, платформа автоматически позаботиться обо всем, кроме одного – чтения данных в транзакции. Если вы хотите, чтобы до конца транзакции никто не смог изменить данные, которые вы прочитали, то вам нужно установить на них блокировку. Классический пример – контроль остатков. Вы прочитали остатки, приняли решение и начали записывать движения (в том числе списывать остатки). Если это происходит в автоматическом режиме, то все будет хорошо. Если в управляемом, то ваше чтение не защищено и кто-нибудь может списать ваши остатки после того, как вы приняли решение, но до того, как вы записали движения. В этом случае, ваши проводки могут оказаться некорректными (остатков, на которые вы рассчитывали, может уже не быть).
33. MSensey 49 30.09.09 10:25 Сейчас в теме
В итоге ставлю статье "минус" - все было сведено к переводу на УБ и при этом присутствуют неверные решения.
39. Minotavrik 1634 30.09.09 16:56 Сейчас в теме
Спасибо за совет! я про УПП говорю. А в статье возможно где-то не так выразился. На критику каждый имеет право.
44. CheBurator 3119 02.10.09 04:09 Сейчас в теме
из того что я себе представляю: не может быть универсального решения на управляемых блокировках. все зависит от частностей - от темпов проведения доков, от характера самих доков и от много другого.. то есть чтобы сделать эффективные УБ - надо на живой базе или на тестовом стенде на объемах данных близким к реальным погонять и померять...
????
45. MSensey 49 02.10.09 09:04 Сейчас в теме
(44) есть общие правила по которым можно определить необходимость управляемой блокировки
47. CheBurator 3119 02.10.09 10:41 Сейчас в теме
(45) речь не про это, а про то, что сам код упр.блокировок - будет зависеть от многих причин. т.е. упрощенно может потребоваться перетасовка порядка проведения по разным регистрам...
46. Winston 02.10.09 09:29 Сейчас в теме
Статья очень хорошая. Спасибо, помогла.
48. Minotavrik 1634 03.10.09 12:46 Сейчас в теме
Статья очень хорошая. Спасибо, помогла.
очень рад, что пригодилась.
ybatiaev; +1 Ответить
49. Minotavrik 1634 03.10.09 12:49 Сейчас в теме
из того что я себе представляю: не может быть универсального решения на управляемых блокировках. все зависит от частностей - от темпов проведения доков, от характера самих доков и от много другого.. то есть чтобы сделать эффективные УБ - надо на живой базе или на тестовом стенде на объемах данных близким к реальным погонять и померять... 
????


Категорически согласен. Каждую конфигурацию надо рассматривать отдельно.
50. vika64 75 20.10.09 16:26 Сейчас в теме
хочу попробовать воспользоваться вашим опытом. У нас терминальный режим, СКЛ 2000, управление торговлей 8.1. для беларуси. 20 пользователей. Документы заказ покупателя и реализация. и куча регистров к ним. Реализация проводится на завтра. Помогут ли здесь управляемые блокировки и могу ли я испортить базу, например остатки по минусу пойдут?
51. Sergant 54 09.06.10 10:32 Сейчас в теме
Спасибо автору за статью. Спасибо за расширенеи моего кругозора.
Побольше бы подобных статей где вы будете делится своими успехами и неудачами. Плюс.
52. expert.1c8 23.09.10 21:44 Сейчас в теме
Интересна как сама статья, так и комменты к ней, причем даже негативные..
надо больше таких статей, которые пусть и с какими-то недостатками, но описывают реальный опыт внедрения...
53. legawww 26.09.11 16:49 Сейчас в теме
Интересная статья, спасибо
54. legawww 26.09.11 16:54 Сейчас в теме
Я так понимаю что управляемые блокировки плюс установка исключительной блокировки в транзакции убирают возникновение ошибки deadlock, но у меня она все равно появляется при проведении двух разных документов Заказ покупателя, которые резервируют товар и в которых одинаковые товары
55. elena_77 24.10.11 08:26 Сейчас в теме
Статья полезная. Спасибо.
56. nnurik 08.11.11 15:24 Сейчас в теме
Много полезного узнала. Спасибо.
57. пользователь 13.11.11 19:43
Сообщение было скрыто модератором.
...
58. cannabis_86 15.11.11 11:38 Сейчас в теме
Я новичок в 1спрограммировании. Для меня оказалось полезным.
59. Sairys 19.12.11 17:39 Сейчас в теме
Интересная статья, я так понимаю блокировки которые выставлены в автоматическом режиме выполнаются на стороне СУБД. А управляемые на стороне платформы 8
60. AlexanderKai 17.01.12 10:49 Сейчас в теме
Не все конечно удалось исправить, но некоторые моменты из статьи для себя почерпнул.
61. kernst 19.01.12 11:54 Сейчас в теме
Мне для общего развития не лишнее. Хотя конечно все поверхостно. С блокировками нужно читать полноценные статьи, чтобы в них разобраться.
62. AlexandrRo 01.02.12 00:22 Сейчас в теме
Посоветуйте, пожалуйста, как отловаить дедлок, в профайлере 5-6 раз в день вылезает, журнале регистрации видно что транзакция отваливается, поделитесь опытом как вы определяете где копать ?
63. trade85 01.02.12 01:26 Сейчас в теме
ага. мне тоже интересно
64. Smart_Fox 15.11.13 01:12 Сейчас в теме
Статья тупо слизана из книжки "Профессиональная разработка"!!!
И не стыдно за такой плагиат еще и "СтарМани" требовать?!
Ничего нового в статье на две страницы текста не почерпнул :(
Не советую это качать не тратьте время и деньги. вот такая же статья но на халяву :)
http://1cexpo.ru/informacziya/27-blokirovki-dannyx-v-1spredpriyatii-8.html
d4rkmesa; Brook; rayastar; +3 Ответить
Оставьте свое сообщение