Проблемы параллельности

Petro Bazeliuk —  Июнь 26, 2017 — Оставьте комментарий

Хочу рассмотреть вопросы и подготовку к сертификации. Учить правильные ответы плохой путь, а вот понимать ответы и применять их, вы тем самым становитесь на путь к уровню «1С:Эксперт». По сути это цикл записей с расширенными ответами на несколько вопросов из тестов.

В конфигурации для регистров введено свойство «Разрешить разделение итогов». Это свойство, позволяет включить или отключить возможность разделения итогов для конкретного регистра. Отключение свойства полностью исключает влияние данного механизма на работу регистра, так как само поле, используемое для разделения итогов, не включается в структуру регистра. Например, отключение данной возможности полезно для регистров, которые не используются при параллельной работе пользователей. Например, для регистров всегда заполняемых специальными регламентными обработками.
Данный механизм работает только при записи движений. При обращении к итогам регистров в запросе блокировка накладывается на все записи с используемыми комбинациями измерений.
Данный механизм не работает в файловом варианте, так как там поддерживается только блокировка уровня таблиц. Также он не поддерживается при работе с СУБД PostgreSQL в автоматическом режиме блокировок.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72-73.
• ИТС: Устройство и использование режима разделения итогов регистров


Разделение итогов увеличивает параллельность операций записи, но на практике это существенно только для тех транзакций, где нет чтения записываемых данных.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72-73.
• ИТС: Устройство и использование режима разделения итогов регистров
• ИТС: Проведение документа – новая методика


После включения режима разделения итогов регистра, при записи в регистр потребуется выполнять со свойством «БлокироватьДляИзменения = Истина» в случаях, когда после записи выполняется чтение итогов регистра. Это необходимо для предотвращения взаимоблокировки.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72-73.
• ИТС: Устройство и использование режима разделения итогов регистров
• ИТС: Проведение документа – новая методика
• ИТС: Типичные причины избыточных блокировок и методы оптимизации


См. пункт 3


Разделяемые управляемые блокировки снимаются в конце транзакции.


Независимое разделение данных позволяет использовать одну базу с одной конфигурацией для учета в нескольких организациях или подразделениях, при этом доступ к разделённым данным возможен только в пределах своей области данных.


В состав разделителя могут входить следующие объекты конфигурации:

  • константы,
  • справочники,
  • документы,
  • последовательности,
  • журналы документов,
  • планы видов характеристик,
  • планы счетов,
  • планы видов расчета,
  • бизнес-процессы,
  • задачи,
  • регистры сведений,
  • регистры накопления,
  • регистры бухгалтерского учета,
  • регистры расчета,
  • планы обмена,
  • регламентные задания,
  • пользователи информационной базы

Источники:
• ИТС: Механизм разделения данных


Независимое и совместное разделение данных наиболее оптимально с точки зрения производительности подходит для использования одной базы данных с одной конфигурацией для учета в нескольких организациях или подразделениях, при этом доступ к разделённым данным возможен только в пределах своей области данных.


Свойство Использовани разделяемых данных определяет возможность использования данных разделенных объектов конфигурации в том случае, если в режиме «1С:Предприятие» разделитель не используется:

  • Значение Независимо – запрещается любое обращение к разделенным объектам (кроме планов обмена, подробнее см. здесь), если в текущем сеансе работы с информационной базой разделитель не используется. При этом разделитель недоступен в объектной модели, в языке запросов, в формате выгрузки в XML и XDTO, а также ограничениях доступа к данным. При записи разделенных данных система автоматически заполняет значения общего реквизита значениями, установленными в текущем сеансе.

Данный режим может использоваться в тех случаях, когда прикладное решение в своей работе использует только данные одной области данных.

ВНИМАНИЕ! В этом режиме ссылки объектов базы данных могут быть одинаковыми для объектов, записанных в разных областях данных.

  • Значение Независимо и совместно – разрешается работа с разделяемыми объектами независимо от использования разделителя в сеансе. Для такого режима будет доступна область данных, которую определяют значения используемых разделителей. При этом разделитель доступен в объектной модели, в языке запросов, в формате выгрузки в XML и XDTO, а также в ограничениях доступа к данным. В этом режиме невозможно создание предопределенных элементов для объектов, входящих в состав такого разделителя. Если в сеансе используются не все разделители, в состав которых входит объект, то работа с этим объектом будет менее эффективной.

Данный режим может использоваться в тех случаях, когда прикладное решение в большинстве случаев работает только с данными одной области данных (например, при вводе документов), а в некоторых режимах может использовать данные нескольких или всех областей, например, для получения консолидированной отчетности.

ВНИМАНИЕ! В этом режиме ссылки объектов базы данных не могут быть одинаковыми для разных объектов, записанных в разных областях данных.
Источники:
• ИТС: Механизм разделения данных


Независимое и совместное разделение данных в информационной базе применяется только к выбранным планам обмена, регламентным заданиям, константам, справочникам, документам, планам счетов, планам видов характеристик, планам видов расчета, регистрам всех видов, бизнес-процессам и задачам.
Источники:
• ИТС: Механизм разделения данных


См. пункт 9


Если использовать независимый и совместный разделитель данных тогда появится возможность разрешить некоторым пользователям заходить без указания значения разделителя, и эти пользователи будут видеть все данные. Но эффективной работы с этими данными не получится, поскольку во всех индексах первым полем будет идти разделитель, а пользователь с максимальными полномочиями будет работать без указания разделителя, то все запросы будут выполняться со сканированием: медленно и избыточными блокировками.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 76-77.


В случае необходимости создания информационной системы с ограничением доступа рядовых пользователей к части данных, но при полном доступе руководства, лучше рассматривать вариант Row Level Security (RLS).


См. пункт 12


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


При включении использования текущих итогов параллельность записи наборов регистров бухгалтерии и накопления (остатков), отличающихся только периодом (месяцем) в управляемом режиме управления блокировками (разделение итогов запрещено): прекращается.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-73.


При включении использования текущих итогов параллельность записи наборов регистров бухгалтерии и накопления (остатков), отличающихся только периодом (месяцем) в автоматическом режиме управления блокировками (разделение итогов запрещено): прекращается.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-73.


До версии платформы 8.2.14 узким местом была таблица констант целиком. Все значения констант, определенных в конфигурации, хранились в одной таблице.
Начиная с версии платформы 8.2.14 на каждую константу имеется собственная таблица, если не используется режим совместимости (ниже 8.2.14). Это позволяет записывать разные константы параллельно.
Начиная с версии платформы 8.3 при использовании уровня изоляции Read Committed Snapshot (MS SQL Server 2005 и старше), если не используется режим совместимости (ниже 8.3), можно забыть про сложности с разделяемыми блокировками СУБД, они не устанавливаются. Это позволяет читать и записывать константы параллельно.


См. пункт 18


Узким местом при перемещении границы последовательности является перемещение границы как вперед, так и назад.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 70-71.


Для наборов записей регистра расчета с использованием фактического периода действия возможна параллельная запись, если отличается период действия (месяц) или измерение, у которого стоит признак «базовое».
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 72.


При перемещении границы последовательности назад узким местом есть таблица границ последовательности, при перемещении границы последовательности вперед узким местом могут быть как таблица записей регистрации документов в последовательности, так и только таблица границ последовательности.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 70-71.


Общая рекомендация отключить движение границы последовательности при проведении документов. Перемещение границы последовательности должно происходить, например, регламентным заданием или служебной обработкой в нерабочее время или небольшими порциями.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 70-71.


Для наборов записей регистра бухгалтерии когда разделение итогов выключено и текущие итоги не используются при управляемом режиме блокировки данных возможна параллельная запись, только если отличается период (месяц), или счет, или хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра бухгалтерии когда разделение итогов выключено и текущие итоги используются при управляемом режиме блокировки данных возможна параллельная запись, только если отличается счет, или хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра бухгалтерии когда разделение итогов включено и разрешено возможна параллельная запись для полностью совпадающих данных.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 69.


Для наборов записей регистра сведений (независимого непериодического) возможна параллельная запись если отличается хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра накопления (остатков) когда разделение итогов выключено, текущие итоги не используются при управляемом режиме блокировки данных возможна параллельная запись, только если отличается период (месяц), или хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра накопления (остатков) когда разделение итогов выключено, текущие итоги используются при управляемом режиме блокировки данных возможна параллельная запись, только если отличается хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра накопления (остатков) когда разделение итогов включено и разрешено возможна параллельная запись для полностью совпадающих данных.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра накопления (оборотов) когда разделение итогов выключено, текущие итоги не используются при управляемом режиме блокировки данных возможна параллельная запись, только если отличается период (месяц), или хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра накопления (оборотов) когда разделение итогов выключено, текущие итоги используются при управляемом режиме блокировки данных возможна параллельная запись, только если отличается хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра накопления (остатков) когда разделение итогов включено и разрешено возможна параллельная запись для полностью совпадающих данных.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра сведений (независимого периодического) возможна параллельная запись если отличается период (месяц), или хотя бы одно измерение.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для наборов записей регистра расчета без использованием фактического периода действия возможна параллельная запись наборов с разными регистраторами.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 69.


Для наборов записей регистра сведений (подчиненного регистратору) возможна параллельная запись наборов с разными регистраторами.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 68-69.


Для элементов объектных типов: справочников, документов, планов видов характеристик, планов счетов, планов видов расчета, бизнес-процессов, задач, планов обмена возможна параллельная запись разных объектов, принадлежащих к одному типу при использовании MS SQL Server, но при использовании PostgreSQL и Oracle в автоматическом режиме блокировок невозможна.


На возникновение очередей в информационной системе могут указывать частые ошибки о превышении времени предоставления управляемых блокировок.


Встретившись с проблемами параллельности, оценку трудозатрат надо давать с учетом этой особенности таких задач.
Обычные подозреваемые:

  • избыточная блокировка данных в «1С:Предприятии» или в СУБД;
  • не справляется оборудование.

Может, однако, случиться и такое, что сработает критическая секция (участок кода, который одновременно может выполняться только в одном месте), например:

  • автонумератор;
  • драйвер HASP-ключа и др.

Такая проблема классифицируется как неподконтрольная.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 24.


За бутылочными горлышками может быть каскад из неопределенного числа других «бутылочных горлышек».
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 24.


Чтобы ответить на вопрос: имеем мы дело с проблемой производительности или проблемой параллельности нужно найти наиболее типичного представителя действий, выполненных по ключевой операции, для которой требуется улучшать APDEX, и в нерабочее время его выполнить.
Источники:
• книга «Настольная книга 1С:Эксперта по технологическим вопросам», издание 2, с. 20-24.

Petro Bazeliuk

Записи

Опыт работы с «1С:Предприятие 8» — более 10 лет, за это время реализовано 30 успешных проектов по итеративным методологиям Scrum и Kanban. Оптимальные решения для высоконагруженных ИБ с онлайном от 400 человек. Занимаюсь продвижением в массы системы контроля версий — git и методики git-flow, TDD, BDD, а также проработкой паттерна минимальной модификации конфигурации и внесением изменений без обновления базы данных. Время от времени участвую в проекте xUnitFor1C.

Комментариев нет

Be the first to start the conversation!

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s