Очистка базы УПП для уменьшения объема
База перестала отправлять исходящие письма из-за ошибки «Превышен допустимый размер внутреннего файла»:

База весит 40 Гб:

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


Клиент сообщил, что можно удалять данные до 2020 года (за прошедшую пятилетку).
Очистка старых версий
Не нашел, как штатно чистить версии в УПП.
Использую код, найденный на Инфостарте.
Текст запроса:
ВЫБРАТЬ //ПЕРВЫЕ 2
ВерсииОбъектов.Объект,
ВерсииОбъектов.НомерВерсии,
ВерсииОбъектов.ДатаВерсии
ИЗ
РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
ГДЕ
ВерсииОбъектов.ДатаВерсии < &ДатаВерсии
И НЕ ВерсииОбъектов.ВерсияПроигнорирована
СГРУППИРОВАТЬ ПО
ВерсииОбъектов.Объект,
ВерсииОбъектов.НомерВерсии,
ВерсииОбъектов.ДатаВерсии
УПОРЯДОЧИТЬ ПО
ВерсииОбъектов.ДатаВерсии
Указываю в параметрах 1 января 2020 года, чтобы удалить старые версии до этой даты, находит 780902 записи:

Проверяю, что код правильно написан, исследуя структуру регистра (состав измерений):

Пишу в запросе выборку первых двух записей, чтобы отладить код:

Код использую такой:
НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Объект.Установить(Рез.Объект); НаборЗаписей.Отбор.НомерВерсии.Установить(Рез.НомерВерсии); НаборЗаписей.Прочитать(); НаборЗаписей[0].ВерсияОбъекта = Новый ХранилищеЗначения(Неопределено); НаборЗаписей[0].ВерсияПроигнорирована = Истина; НаборЗаписей.Записать(Истина); //Сообщить(Рез.Объект);
Запускаю в 20:32, прогрессор обещает завершение в 23:14:

Удаление вложений
Для поиска вложений использую запрос:
ВЫБРАТЬ //ПЕРВЫЕ 3
Т.Объект.Дата, Т.Ссылка
ИЗ
Справочник.ВложенияЭлектронныхПисем КАК Т
ГДЕ
Т.Объект.Дата < Дата
Для удаления использую код:
ОО = Рез.Ссылка.ПолучитьОбъект(); //Сообщить(ОО); ОО.Удалить();
Проверяю на первых трех объектах, удалят нормально:

Находит всего 3062 таких вложения. Запускаю удаление параллельно удалению версий, проходит за несколько минут.
Анализ результата
Регистр версий уменьшился с 3972 до 2472, примерно на 40%.

Вложения почты уменьшились не существенно, почта там хранится преимущественно после 2020 года, с 5968 до 5647, примерно на 5%:

Сжатие базы
Само удаление позволило работать пользователям сразу по мере очистки базы.
Вечером через сутки было запущено сжатие базы (через ТиИ). Размер базы стал 37.7 Гб:

Уменьшение объем 37.7 : 39.6 = 5%. Но они спасают. Порекомендовал клиенту переходить на SQL или чистить вложения в почту за последние 5 лет.
Среда: УПП 1.3.96.1, 1С 8.3.19.1522 Объем: 1.5 час




Свежие комментарии