Оптимизация 1С – Режим разделения итогов

17.10.14

База данных - HighLoad оптимизация

Чем интересна эта статья?

• В статье рассматривается предназначение режима разделения итогов
• Разбирается поведение системы «1С:Предприятие 8» при параллельной работе большого количества пользователей
• Показываются минусы режима разделения итогов
• Выдаются рекомендации по корректному использованию разделения итогов регистра

Скачать исходный код

Наименование Файл Версия Размер
Оптимизация 1С - Режим разделения итогов
.pdf 491,80Kb
8
.pdf 491,80Kb 8 Скачать

 

Платформа «1С:Предприятие 8» содержит возможности и механизмы, о работе которых не все имеют полное представление, как и о способах их эффективного использования. Таковым является режим разделения итогов.

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

Покажем эффективность данного режима с помощью примера. Для этого рассмотрим ситуацию до и после включения режима разделения итогов.

 

До включения режима разделения итогов

Мы имеем в наличии два одинаковых документа с номерами 001 и 002:

документы с номерами 001 и 002

Оба документа осуществляют движение по регистру накопления. Контроля остатков нет. Структура регистра накопления:

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

Вот что происходит в системе:

  1. Документы пытаются внести запись в регистр накопления
     
  2. На уровне СУБД регистр накопления представлен двумя таблицами: таблицей движений и таблицей остатков (таблица итогов).
     
  3. В таблице движений возможна запись документами своих данных параллельно. Это обеспечивается различными значениями поля «Регистратор», и, соответственно, работа идет с различными строками таблицы.
     
  4. А вот в таблице остатков нет поля «Регистратор», данные в этой таблице хранятся в разрезе измерений самого регистра.
     
  5. Тут наблюдается ситуация, при которой двум документам необходимо изменить одну запись, но одну запись одновременно менять нельзя.
     
  6. Для того чтобы не потерять записываемые данные, какой-либо из документов должен ожидать своей очереди на запись, пока другой документ не запишет свои движения. И, после того как первый из документов внесет свои движения, второй сможет внести уже свои.

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

 

Включение режима разделения итогов

Включение данного режима выполняется достаточно просто:

 Заметим, что режим разделения итогов включен по умолчанию для всех создаваемых регистров накопления и бухгалтерии. Помимо Конфигуратора в пользовательском режиме мы можем посмотреть, для каких регистров включено использование режима: 

Что происходит после включения режима разделения итогов?

В таблице итогов регистра накопления/бухгалтерии появляется новый столбец «Разделитель». В самой СУБД он назван «Splitter».

При этом таблица движений остается неизменной, разделителем в ней выступает «Регистратор». Изменение мы видим в таблице итогов. Это поле заполняется только в том случае, когда две (или более) транзакции пытаются изменить одну строку в таблице итогов. При возникновении такого случая поле «Разделитель» хранит разные значения для каждой из транзакций. Такая реализация режима разделения итогов делает возможным выполнять параллельную запись всем транзакциям. В нашем примере с двумя документами при включении режима наблюдается следующее:

Оба наших документа выполнили параллельную запись своих данных благодаря новому полю «Разделитель». В результате не возникают ожидания при блокировках и повышена параллельность работы пользователей. 

 

Минусы режима разделения итогов

При включении данного режима увеличивается размер таблицы итогов регистра из-за того, что было добавлено новое поле, и появляется несколько строк по набору измерений взамен одной. При получении остатков по регистру возникает потребность свертки данных, что приводит к затратам времени, пусть и незначительным. В нашем случае с двумя документами для получения остатка товара «Стол» по складу «Основной» возникает необходимость сложения двух строк для получения итогового значения «7». При выключенном разделителе группировка строк (сложение) не требуется. 

 

Когда следует использовать режим разделения итогов?

Для этого необходимо выполнить условия:

  1. По регистру нет контроля остатков - нет чтения данных в транзакции. В регистрах бухгалтерии контроль остатков, как правило, отсутствует. Но если контроль остатков присутствует, то мы не получим никакого выигрыша в производительности. К тому же, при контроле остатков нужно использовать свойство набора записей «БлокироватьДляИзменения», так как возникает вероятность взаимоблокировки.
  2. С регистром выполняется параллельная работа пользователей, причем активная.
     

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

 

 


 Бурмистров Андрей


Другие полезные статьи и видео смотрите на нашем сайте: http://

Ускорение Производительность Запросы Оптимизация Курсы Обучение Курсы-по-1С.рф Гилев Насипов Spec8.ru Spec8 NasF

См. также

Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    3590    spyke    28    

47

Быстродействие типовой 1С

HighLoad оптимизация Платформа 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    5550    vasilev2015    19    

38

Анализируем SQL сервер глазами 1С-ника

HighLoad оптимизация Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих зааросов на sql, ожиданий, конвертация запроса в 1с и рекомендации где может тормозить

1 стартмани

15.02.2024    8315    169    ZAOSTG    74    

101

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    6601    doom2good    48    

65

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    9438    ivanov660    6    

76

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5365    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16611    skovpin_sa    14    

101