Влияние режима удаления движений на производительность

03.11.13

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

Статья навеяна одним хитрым вопросом, который иногда задают на экзамене 1С Эксперт. Вопрос звучит примерно так: «Чем опасен режим удаления движений «Удалять автоматически?»

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

А все на самом деле очень просто.

Если у документа установлен режим удаления движений «Удалять автоматически», то при перепроведении этого документа, еще до выполнения процедуры ОбработкаПроведения, движения будут удалены.

Теперь вспомним теорию, что бы удалить данные необходимо наложить X блокировку, а она как известно, держится до конца транзакции.

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

Рассмотрим пример.

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

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

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

Оранжевым цветом, закрашены этапы, на которых данные буду блокированы.

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

автоматическое удаление движений

См. также

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

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

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

13.03.2024    2951    spyke    26    

42

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

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

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

13.03.2024    5087    vasilev2015    19    

37

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

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

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

1 стартмани

15.02.2024    7610    158    ZAOSTG    66    

96

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

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

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

09.01.2024    5944    doom2good    48    

63

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

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

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

20.11.2023    8827    ivanov660    6    

76

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

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

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

15.11.2023    5091    a.doroshkevich    20    

72

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

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

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

11.10.2023    16149    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. peterxx 21 27.09.13 09:21 Сейчас в теме
Да почему бы и нет. Ликбез нужен, без него никак.
4. awk 741 30.09.13 18:57 Сейчас в теме
(1) peterxx, Нужен, но тема не до конца раскрыта. Была бы раскрыта вопроса (2) не было бы.
2. vvr908 446 29.09.13 13:35 Сейчас в теме
В таком случае возникает ламерский вопрос - а зачем вообще нужен режим "Удалять автоматически"?
3. webester 26 30.09.13 07:20 Сейчас в теме
(2) Потому что этого может требовать логика приложения а так же для обеспечения совместимости. В модуле обработки проведения "Длительных вычислений и прочих действий" может и не быть.
С любовью, всегда ваш Кэп.
dimisa; bulpi; +2 Ответить
5. Ndochp 103 02.10.13 09:57 Сейчас в теме
Забыт еще один момент - при перезаписи в регистр набора, совпадающего с уже записанным фактической записи не происходит.
То есть при перерпроведении с "удалять автоматически" для какого-нибудь крупного документа сначала запишется пустой набор, потом снова все его движения, а при записи движений "поверх" старых движений есть шанс, что СУБД вообще дергаться не будет.
user598350_grimax; +1 Ответить
6. webester 26 03.10.13 06:47 Сейчас в теме
(5)Я бы сказал, ключевой момент, который вроде бы вытекает из повествования, но не очевиден.
8. Andreynikus 1361 08.10.13 13:04 Сейчас в теме
(6)
Ключевой момент в том, что записи будут блокированы для удаления в самом начале проведения, что не есть хорошо.
7. Andreynikus 1361 08.10.13 12:58 Сейчас в теме
(5)
при перерпроведении с "удалять автоматически" для какого-нибудь крупного документа сначала запишется пустой набор, потом снова все его движения

Так и есть, только это будет действовать не только для крупных документов, а вообще для всех :)

а при записи движений "поверх" старых движений есть шанс, что СУБД вообще дергаться не будет

Опишите ситуацию при которой СУБД не будет удалять и перезаписывать движения если установлен режим "Удалять автоматически"
На моих тестах удаление происходит всегда.
9. Ndochp 103 08.10.13 14:39 Сейчас в теме
(7)
а при записи движений "поверх" старых движений есть шанс, что СУБД вообще дергаться не будет

Опишите ситуацию при которой СУБД не будет удалять и перезаписывать движения если установлен режим "Удалять автоматически"

Так я и сравниваю "удалять автоматически" и нет, как и в статье. Если "удалять автоматически" стоит, то очистка идет всегда и обойтись без перезаписи в СУБД шансов нет.

Про большие документы я хотел написать, что у них даже удаление движений долго идет, не то что формирование. Но как-то передумал в процессе написания поста.
11. Poison Angel 03.07.15 15:00 Сейчас в теме
(5) Ndochp, вот сейчас на фактических данных проверил:
- провел документ. режим удаления движений "Удалять автоматически при отмене проведения."
- выбрал в документе ещё раз то же самое значение в реквизите таб. части
- получил при проведении ошибку записи в регистр сведений "запись с такими ключевыми полями..." (ну вы в курсе, про неуникальность)

Так что условия, требуемые для того, чтобы СУБД вообще "не дергалась", несколько строже, чем простое совпадение набора с существующей записью.
10. dyak84 17.10.13 16:57 Сейчас в теме
Да все что можно удалить нужно закрить от простых и смертеных пользователей чем подальше, а то потом глюков не оберешся,а туту еще чтото удаляется автоматически етот факт заставляет задуматся что в базе на 200 пользователей размером 300 гб кто и чтото автоматически почнет удалять про какую производительность идет речь
12. user598350_grimax 25.12.19 10:51 Сейчас в теме
К сожалению господа оптимизаторы забывают о типовых кейсах а именно: изменение старых документов и участие документа в обмене! и когда приходится перепроводить старые документы а еще при наличии у них введенных на основании или перегрузке старых то такие оптимизации выливаются в просто ад с кучей доков у которых либо есть движения при снятом признаке проведения либо вообще расходятся с данными в таблицах документов. Вывод чем больше в конфигурации документов с признаком удаление движений Не удалять автоматически тем больше скрытых проблем может обрушится на пользователя но зато блокировок меньше ура).
13. user598350_grimax 25.12.19 15:34 Сейчас в теме
(12)К слову в ERP таких 133 (состав ОпределяемыйТип.ПроверяемыйДокументРеглУчета)
14. Andreynikus 1361 26.12.19 07:24 Сейчас в теме
(12)
Рекомендуемый режим удаления никак не может привести к тому что документ будет расходиться с движениями или будет проведен без пометки проведения. К сожалению Вы не поняли того что написано в статье.
15. FilippSerg 82 04.10.23 16:51 Сейчас в теме
В книге "Реализация прикладных задач" говорится, что режим «Удалять автоматически?» приводит к тому, что при перепроведении документа между завершением транзакции удаления движений и началом блокировки данных для проведения есть временной промежуток. Если это Расходная накладная, то при перепроведении на некоторое время остатки товара высвободятся, и эти остатки может списать другой документ.
16. Andreynikus 1361 05.10.23 14:16 Сейчас в теме
(15)
Если транзакция открыта, то все X блокировки, которые как раз возникают при удалении, будут держаться до окончания транзакции, это подтверждается экспериментами, опытом, документацией СУБД и здравым смыслом.
Попробуйте сами отследить профайлером/расширенными событиями команды СУБД по установке и снятии блокировок и начале завершении транзакций.
Оставьте свое сообщение