Павлов Андрей

37
Рейтинг

mrApachik
Андрей Павлов



  •   Регистрация: 08.12.2008 (15 лет назад)

  •   Был(а) на сайте: 04.02.2012

Подписчики 2

Рейтинг 37

Свертка версий объектов

Инструменты и обработки Системный администратор Платформа 1С v8.3 1С:Управление производственным предприятием Россия Абонемент ($m) Внешняя обработка (ert,epf) Свертка базы

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

1 стартмани

30.11.2009    16144    257    mrApachik    23       

37

Комментарии

DevИ снова 1C Visio#46 17.01.12 18:48
Огромное спасибо! Однозначно "+".
AdminСвертка версий объектов#14 03.12.09 14:14
Эта схема уже работает на реальной базе? Я думаю, что будут ощутимые потери производительности. Сначала нужно получить версию текущего объекта, записать её на диск (т.к. сейчас при версионировании используются объекты, которые не умеют работать в памяти), что по потери скорости уже практически равно созданию обычной новой версии. Потом получить предыдущую версию, проверить не сжата ли она фоновым заданием, если сжата, то "расжимаем".
И только тогда сравниваем версии... В большинстве случаев это очень неэффективно.
В версионировании узкое место - это жесткий диск, если все операции выполнять в памяти, думаю можно в разы ускорить работу. Для этого можно попробовать писать в ХранилищеЗначения не ДвоичныеДанные, а например внутреннее строковое представление объекта. Правда не знаю, насколько это оправдано. Нужно проверять...
AdminСвертка версий объектов#11 03.12.09 12:43
(9) Вот вот :) Хорошо бы всё таки организовать проверку версий в реальном времени при записи объектов, но честно говоря как это реализовать с незначительной потерей производительности и отсутсвием конфликтов блокировок, пока не знаю...

(10) Записей будет столько, сколько раз будут записывать версионируемые объекты (изначально 0). А насчет SQL... Моё мнение: если потребность в переходе на SQL выше, чем его стоимость, то конечно стоит!
AdminСвертка версий объектов#8 02.12.09 14:18
Запись в регистре версий сама по себе хранит, не изменения, а полную копию реквизитного состава объекта, и "лишними" в данном случае считаются те записи, в которых эти копии равны, разумеется по порядку нумерации.

Пример:
Открываем любой документ, для которого в настройках версионирования стоит "Версионировать". 5 раз нажимаем кнопку "Записать", открываем историю изменения объектов и смотрим. Появилось 5 новых версий. Если посмотреть отчет по изменениям этих версий, он покажет что версии идентичны. Соответственно - эти записи нам не нужны...
AdminСвертка версий объектов#6 30.11.09 18:21
(2) На базе 1 милион записей запрос выполнился на дохлом ноутбуке в течении 10 сек. :), из базы тянуться только ссылки, что не затратно. На действительно больших объемах конечно есть смысл оптимизировать, и выбирать объекты пачками, а не одним запросом. Вытянув ссылки на весь милион объектов клиентская 1Ска в процессах занимала 300 мб оперативной памяти... Поэтому не возникало задачи, что то оптимизировать, но в близжайшее время как раз займусь этим, т.к. база в скором времени планирует увеличиваться...

(3) В этом случае, возникают блокировки :(

(4) Идет внедрение, поэтому от таких ситуаций, пока не избавится :)

(5) Спасибо, будем думать над развитием.
AdminСвертка версий объектов#0 30.11.09 17:33
Данная обработка неплохо справляется с проблемой очистки лишних записей в подсистеме версионирования объектов, которые накапливаются в результате перепроведения документов, или перезаписи справочников. Часто это события не приводят к изменению объектов, но тем не менее, версионируются, отчего база начинает пухнуть от ненужной информации...