Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь сталкивался с укрупнением блокировок в менеджере блокировок сервера 1С? Поясню на примере регистра накопления. Создадим 2 набора записей, не пересекающихся по набору измерений, в 2 разных сеансах. Затем явно откроем транзакцию в сеансе 1 и запишем первый набор, но завершать транзакцию пока не станем. В сеансе 2 попытаемся записать второй набор записей и столкнемся с любопытным ограничением менеджера блокировок. Оказывается при достижении определенного количества записей в одном из наборов, сервер 1С блокирует весь регистр. Как ни странно, эта фича проявляется только в управляемом режиме. В автоматическом режиме увеличение количества записей приводит к блокировкам на сервере БД – это нормально. В управляемом режиме запрос к серверу БД даже не формируется, сессия просто отваливается по таймауту на уровне сервера приложений. Проверялось на платформе 8.2.15. Для чистоты эксперимента, эскалация блокировок в MS SQL сервере отключена принудительно. Аналогичный эффект в управляемом режиме наблюдается и при использовании СУБД Oracle 11.2 (в автоматическом режиме на Оракле не проверялось по понятной причине). Собственно вопрос: не попадались ли кому-нибудь комментарии разработчиков на эту тему? Хотелось бы знать, от чего зависит укрупнение блокировки, и нет ли каких-либо настроек сервера, позволяющих увеличить лимит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2012, 12:12 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Зарегался, код установки управляемой блокировки приведите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2012, 14:15 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
DmitriyZЗарегался, код установки управляемой блокировки приведите. Управляемую блокировку явным образом не устанавливаю. Неявная блокировка устанавливается при записи набора. При этом абсолютно не важно записывается набор из модуля проведения документа или внешней обработкой в транзакции, поведение менеджера блокировок в обоих случаях одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2012, 16:15 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
ЗарегалсяDmitriyZЗарегался, код установки управляемой блокировки приведите. Управляемую блокировку явным образом не устанавливаю. Неявная блокировка устанавливается при записи набора. При этом абсолютно не важно записывается набор из модуля проведения документа или внешней обработкой в транзакции, поведение менеджера блокировок в обоих случаях одинаково. 1) Укажете релиз платформы. 2) Укажите количество записей в регистре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 09:39 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
DmitriyZ, 1) Проверял на 8.2.15.289 и 8.2.15.310. 2) Проверял на типовом регистре "УчетЗатратРегл" из УПП с 30 миллионами записей и на тестовом регистре с 1 измерением ссылочного типа, заполненным 11 миллионами уникальных значений. В первом случае блокировка возникает при 30 тысячах записей в наборе, во втором 30 тысяч отрабатывают нормально, а на 90 регистр блокируется. Тестировал в 2 сеансах обработкой с простейшим кодом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 13:18 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Зарегался, а если, ради эксперимента, перед чтением набора установить управляемую блокировку по регистратору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 16:09 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
DmitriyZЗарегался, а если, ради эксперимента, перед чтением набора установить управляемую блокировку по регистратору? Сделал так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. К сожалению, начать транзакцию пришлось переставить немного пораньше, вследствие чего теперь скуль ругается на блокировку при выполнении Набор.Прочитать(). Оракла под рукой сейчас нет, так что для продолжения эксперимента видимо придется еще немного вправить мозги богомерзкому отродью MS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 18:25 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Разобрался в чем проблема с блокировкой чтения. Оказывается после переключения режима блокировки у конфигурации с управляемого на автоматический и обратно, у базы данных сбросился параметр READ_COMMITTED_SNAPSHOT. В общем код с явной блокировкой по регистратору работает так же как и без нее. На 90 тысячах записей тестового регистра блокируется всё. Это явная дискриминация пользователей Оракла и, возможно, ПГ. В автоматическом режиме блокировок эти базы неюзабельны, а в управляемом разработчики платформы сделали такую "оптимизацию". При чем, скорее всего, те кто юзает MS SQL даже не замечают этот баг, т.к. на уровне СУБД при дефолтных настройках эскалация блокировок настигает их еще раньше. Остается только уповать на 8.3, в ближайшее время попробую провести тесты на ней, но надежда слабая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 19:42 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Зарегался, а разве ты не читал, что 1С в Оракле блокирует всю таблицу (как было в 77), а не конкретные записи. Потому для оракула только управляемые блокировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2012, 08:59 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
olegvesЗарегался, а разве ты не читал, что 1С в Оракле блокирует всю таблицу (как было в 77), а не конкретные записи. Потому для оракула только управляемые блокировки. В общем-то про это и топик. Но все равно спасибо за up. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2012, 10:12 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Зарегался, как именно работатет мнеджер блокировок информации нет (черный ящик). Видимо, при достижении некого порогового значения, система считает, что проще заблокировать всю таблицу. Если есть возможность, лучше отправить описание проблемы на v8@1c.ru есть вероятность, что они ответят и посоветуют решение. Пару раз мне рекомендовали решения, которые устроили (как раз проблема была связана с управляемыми блокировками). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2012, 11:46 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
а как ты умудрился в регистратор 30 миллионов записей запихать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2012, 23:15 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
saakenа как ты умудрился в регистратор 30 миллионов записей запихать? Вообще-то 30 миллионов - это всего в регистре, а у одного регистратора записей поменьше (в моем примере 90 тысяч). Но ничто не должно мешать сделать сколь угодно большое число записей и у одного регистратора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2012, 10:32 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
У нас та же фигня. До этого жили на релизе 8.2.14.533 уперлись во всеобъемлющую блокировку таблицы при записи больше 20000 записей в наборе регистра бухгалтерии. При этом если записи дописывать частями по 19999 штук, то регистр не блокируется. Но вот чтобы отменить проведение документа с таким количеством записей никуда не денешся уже. С релизом 8.2.15.319 что-то стало работать по другому. Даже порционная запись стала блокировать всю таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:25 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
WalkaboutУ нас та же фигня. До этого жили на релизе 8.2.14.533 уперлись во всеобъемлющую блокировку таблицы при записи больше 20000 записей в наборе регистра бухгалтерии. При этом если записи дописывать частями по 19999 штук, то регистр не блокируется. Но вот чтобы отменить проведение документа с таким количеством записей никуда не денешся уже. С релизом 8.2.15.319 что-то стало работать по другому. Даже порционная запись стала блокировать всю таблицу. настоятельно рекомендую написать на v8@1c.ru иначе разарботчики из 1С будут думать, что у них все хорошо и ничего исправлять не будут. Скорее всего на ваших данных проявляется эта особенность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2012, 09:23 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Поэкспериментировали сегодня, получается, что начиная с 8.2.15 релиза полностью блокируется таблица регистра бухгалтерии при записи набора с количеством проводок больше 10000 (в 8.2.14 было 20000). Т.е. если писать порциями по 9999 штук, то все ок. Мы предусмотрительно вынесли это количество параметром в константу. Так что осталось просто поменять его с 20000 на 10000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2012, 14:46 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Если кто экспериментировал с регистрами накопления/сведений/расчета напишите плиз есть ли на них такие ограничения и какие они? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2012, 14:48 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
А не связано ли это с режимом разделяемых итогов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2012, 16:03 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Не думаю, без них в принципе сложно что либо параллельно записывать в базу. Поэтому при сильно большой пользовательской нагрузке он как бы по умолчанию уже включен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 01:10 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Еще как оказалось в 8.2.15 количество проводок, которое при записи в транзакции укрупняет блокировку нужно считать с учетом удаляемых в этой же транзакции записей. Т.е. Если перепроводится документ в котором например до перепроведения уже было 6000 проводок, то при записи 4000 новых в процессе проведения, даже если записи дописываются частями, регистр полностью заблокируется. Т.е. Считается суммарное количество ключей блокировки в одной транзакции на менеджере блокировок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 01:17 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
WalkaboutНе думаю, без них в принципе сложно что либо параллельно записывать в базу. Поэтому при сильно большой пользовательской нагрузке он как бы по умолчанию уже включен Без них, это без кого? WalkaboutЕще как оказалось в 8.2.15 количество проводок, которое при записи в транзакции укрупняет блокировку нужно считать с учетом удаляемых в этой же транзакции записей. Т.е. Если перепроводится документ в котором например до перепроведения уже было 6000 проводок, то при записи 4000 новых в процессе проведения, даже если записи дописываются частями, регистр полностью заблокируется. Т.е. Считается суммарное количество ключей блокировки в одной транзакции на менеджере блокировок Что-ли или у меня утро не доброе или... не пойму я о чем вы. "записи дописываются частями" - ? "Считается суммарное количество ключей блокировки в одной транзакции на менеджере блокировок" - о каком менеджере блокировок идет речь: о том, что работает в MS SQL(тогда, это вопрос эскалации блокировок) или о том, что в сервере приложений(он такое умеет, где прочли?). "Еще как оказалось в 8.2.15 количество проводок, которое при записи в транзакции укрупняет блокировку нужно считать с учетом удаляемых в этой же транзакции записей. " Это не в 8.2.15 а в самом ядре MS SQL. Опять же, это эскалация блокировок. На это 1С никак не может повлиять, это определяется самим MS SQL Server`ом. Зависит от многих причин - индексов, расмазанности данных по страницам... объема данных. В документации (к MS SQL) механизм эскалации описан "не прозрачно". Где-то говорится о том, что эскалация с записи до страницы происходит при 5 000 блокировок, где-о говорится, что не 5 тыс. а больше... где-то, говорится, что эскалация сразу со страницы поднимается на таблицу... Так же, эскалация будет тогда, когда заканчивается буфер для блокировок. Тогда будет эскалация до таблицы. Это ситуации, когда уровень блокировки может повышаться в процессе выполнения запроса. Не транзакции, а запроса. Ну и естественно, многое зависит от того, как MS SQL сформирует план выполнения запроса - это определяет уровень изоляции до выполнения запроса. В принципе, можно запретить повышать уровень блокировки при эскалации(через флаги трассировки) но сама MS этого очень не рекомендует делать, т.к. в таком случае высока вероятность постоянных дэдлоков. P.S. Для того, что бы эта тема не превратилась в ПТ, нужно описывать конфигурацию вашего SQL сервера и базы данных в нем (режим востановления базы данных, наличие планов обслуживания, состояние данных в MS SQL на момент опытов... ) Как сконфигурирована 1С (имеется в виду сервер приложений), сколько рабочих процессов на нем, сколько пользователей, сколько у него пямяти.. Как сконфигурирована база 1С, включен ли полнотекстный поиск, RLS, версионирование... Было бы не плохо описать что происходит при работе с клиента и с сервера. Что бы понимать влияние канала связи... А так, это сравнение сферичеких баз в вакууме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 09:19 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Да, еще было бы хорошо видеть состояние свопа, обмена с жестким диском(среднюю длинну очереди) и иметь информацию о конфигурации дисковой подсистемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 09:23 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
The Dim!wall of text Ответы на большую часть ваших вопросов написаны в постах выше, начиная с первого. Может быть стоит сначала внимательно почитать? Особое внимание советую обратить на первый пост. Например "эскалация отключена принудительно" и "Oracle" - это явно подразумевает, что стену текста о том как работает эскалация на уровне СУБД можно было опустить. Кстати в документации очень четко описано как она работает в MS SQL, и как её можно поднастроить или отключить вовсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 11:54 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Ну да.. ну да... только вот, наверное, читать нужно было между строк и с ХШ... Удачи в изысканиях. P.S. Прежде чем говорить кому-то, что стоит внимательно читать, может самому стоит последовать своему же совету , а ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2012, 12:04 |
|
||
|
Как работает менеджер блокировок?
|
|||
|---|---|---|---|
|
#18+
Тема про эскалацию блокировок именно на сервере приложений 1С. Когда менеджер блокировок сервера 1С повышает уровень блокировки на всю таблицу, то запросы на сервер баз данных даже не передаются. И тогда уже совсем не важно Oracle там или SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2012, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=28&fpage=52&tid=1520136]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
96ms |
get tp. blocked users: |
2ms |
| others: | 286ms |
| total: | 467ms |

| 0 / 0 |
