Очистка базы УПП для уменьшения объема

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

База весит 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 час

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *