Книга: Настольная книга 1С:Эксперта по технологическим вопросам
Назад: 3.10.Эскалация блокировок
Дальше: Узкие места

3.11.Сведения о параллельности операций с данными разных типов

Общие сведения

Система позволяет осуществлять параллельное чтение и параллельную запись данных. Разные типы данных имеют разные возможности и ограничения по параллельному выполнению операций чтения и записи с ними.

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

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

К сложным ситуациям, когда в одной транзакции выполняются чтение и запись и когда в одной транзакции осуществляется запись в несколько разных прикладных объектов конфигурации, вернемся позднее. А сейчас разберем возможность только записи данных, относящихся к одному прикладному объекту (см. таблицу 3.11.1).

Таблица 3.11.1. Сводные данные о параллельности

Прикладной объект конфигурации Возможности параллельной работы
Константы в версиях до 8.2.14, а также после – при использовании режимов совместимости «8.2.13» и «8.1» Только последовательно, притом даже разные константы
Константы после 8.2.14 (без использования режима совместимости) Одну и ту же константу – только последовательно, но разные константы можно записывать параллельно
Выгрузка сообщений обмена Выгрузка изменений, которые зарегистрированы для прикладного объекта метаданных (например, справочника «Номенклатура»), и запись данных такого типа НЕ могут происходить параллельно
Набор записей регистра расчета с использованием фактического периода действия Возможна параллельная запись, если отличается период действия (месяц) или измерение, у которого стоит признак «базовое». Уточнение по данному вопросу см. ниже
Граница регистрации последовательности Возможна параллельная запись, если отличается хотя бы одно измерение. На практике, однако, измерение, как правило, у всех совпадает («Организация»)
Набор записей регистра сведений (независимый непериодический) Возможна параллельная запись, если отличается хотя бы одно измерение
Набор записей регистра накопления (остатков), если разделение итогов выключено и используются текущие итоги Возможна параллельная запись, если отличается хотя бы одно измерение, уточнение про период см. ниже
Набор записей регистра бухгалтерии, если разделение итогов выключено и используются текущие итоги Возможна параллельная запись, если отличается счет или хотя бы одно измерение, уточнение про период см. ниже
Набор записей регистра сведений (независимый периодический) Возможна параллельная запись, если отличается период (месяц) или хотя бы одно измерение
Набор записей регистра накопления (остатков), если разделение итогов выключено, а текущие итоги не используются Возможна параллельная запись, если отличается хотя бы одно измерение, уточнение про период см. ниже
Набор записей регистра бухгалтерии, если разделение итогов выключено, а текущие итоги не используются Возможна параллельная запись, если отличается счет или хотя бы одно измерение, уточнение про период см. ниже
Набор записей регистра накопления (оборотов), если разделение итогов выключено Возможна параллельная запись, если отличается период (месяц) или хотя бы одно измерение
Набор записей регистра расчета без использования фактического периода действия Возможна параллельная запись наборов с разными регистраторами
Набор записей регистра сведений (подчиненный регистратору) Возможна параллельная запись наборов с разными регистраторами
Элементы объектных типов: справочников, документов, планов видов характеристик, планов счетов (т. е. счета), планов видов расчета, бизнес-процессов, задач, планов обмена (т. е. узлы обмена) Возможна параллельная запись разных объектов, принадлежащих к одному типу
Набор записей регистра накопления (остатков) при разрешенном и включенном режиме разделения итогов Возможна параллельная запись
Набор записей регистра накопления (оборотов) при разрешенном и включенном режиме разделения итогов Возможна параллельная запись
Набор записей регистра бухгалтерии при разрешенном и включенном режиме разделения итогов Возможна параллельная запись

Этим, однако, дело не вполне ограничивается. В автоматическом режиме управления блокировкой данных, когда используется уровень изоляции Serializable, сервером СУБД добавляется блокировка Key-range, которая защищает диапазон строк, считываемый запросом, т. е. запрещает другим транзакциям вставлять в него строки, при этом также блокируются данные, соседние с диапазоном модифицируемых записей. В результате конфликтов на границах диапазонов реальная параллельность записи может быть ниже, чем указано в таблице, т. е., записи, которые теоретически должны бы записываться параллельно, могут не записаться.

В управляемом режиме управления блокировкой данных такой проблемы нет.

Но в управляемом режиме существует другая проблема. Сведения по параллельности, приведенные в таблице 3.11.1, изначально (начиная с книги «Профессиональная разработка...») собирались по сведениям о параллельности для СУБД и не учитывали установки управляемых блокировок «1С» и принятия платформой решений о допустимости или недопустимости параллельной записи на их основе. Вопрос параллельности по периоду при включении и отключении текущих итогов в регистрах накопления (остатков) и регистрах бухгалтерии регулируется управляемыми блокировками «1С». Понятно, что установка управляемых блокировок параллельность улучшить не может, только снизить. Это и происходит с параллельностью по периоду в управляемом режиме, причем поведение системы в этом вопросе зависит от версии платформы и от установленного режима совместимости. В автоматическом режиме возможна параллельная запись, если отличается период (месяц) при любом режиме текущих итогов.

Проблема эскалации блокировок рассматривалась в разделе . Если происходит эскалация, то параллельная работа с такой таблицей становится невозможной.

Назад: 3.10.Эскалация блокировок
Дальше: Узкие места