Каталог решений - Удаление данных в узлах РИБ

Описание

Жила была небольшая сетка РИБ. С узлами на файловых базах. И пришла беда откуда ждали, размеры баз на узлах потихоньку росли и росли, и кое где выросли до неприличных размеров.

Возникла задача, как-то уменьшить размеры баз на узлах.

План работ:

  1. Собрать данные с периферии и написать отчет:
    1. Размер баз.
    2. Характеристики «сервера».
  2. Посмотреть какие данные не особо нужны на периферии.
  3. Подготовить регламент в 1С удаляющий не особо нужные данные.
  4. Подготовить скрипт, для планировщика Windows, для сжатия базы.
  5. Проанализировать результаты работы п. 1-4.

Реализация:

Создаю регламент фиксирующий данные на периферийном «сервере».

Собираю интересующую меня информацию:

СистИнфо = Новый СистемнаяИнформация;
ДанныеПК = Новый Структура;
ДанныеПК.Вставить("ИмяПК", ИмяКомпьютера());
ДанныеПК.Вставить("ТипПлатформы", Строка(СистИнфо.ТипПлатформы));
ДанныеПК.Вставить("ВерсияОС", СистИнфо.ВерсияОС);
ДанныеПК.Вставить("ВерсияПриложения", СистИнфо.ВерсияПриложения);
ДанныеПК.Вставить("Процессор", СистИнфо.Процессор);
ДанныеПК.Вставить("ОперативнаяПамять", СистИнфо.ОперативнаяПамять);
ДанныеПК.Вставить("РазмерБазы", РазмерФайловойБазы());
ДанныеОДисках = ПолучитьИнформациюОДисках();
Для каждого ЭлементДанных Из ДанныеОДисках Цикл
	ДанныеПК.Вставить("Диск_" + ЭлементДанных.Буква, ЭлементДанных.Характеристики);
КонецЦикла;

Пишу полученную структуру в json отправляю в центральный узел.

Создаю отчет отражающий полученные данные:

Смотрю какие таблицы не очень-то и нужны на периферии

Для этого поднимаю копию периферийной базы на SQL-сервере и внимательно разглядываю таблицы, начиная с самых крупных по размеру. Решаю какие из этих данных возможно удалить. Для это работы использовал: «Инструменты разработчика».

Вердикт:

  • Несколько регистров сведений очистить полностью
  • Несколько регистров сведений чистить, оставляя последний месяц
  • Несколько справочников очистить полностью
  • Один тип документов очистить полностью
Подготавливаю регламент по удалению данных.

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

Т.к. любая запись занимает какое-то время, что бы не мешать пользователям данные удаляю ночью пачками по N-записей.

Пишу для удаления что-то типа такого:

// РС полная очистка
ИмяТаблицы = "Регистр1";
ОчиститьРегистрСведенийПолностью(ИмяТаблицы);	

// РС частичная очистка
КоличествоЭлементов = "80000";
ИмяТаблицы = "Регистр2";
ОчиститьРегистрСведенийЧастично(ИмяТаблицы, КоличествоЭлементов);

// РН частичная очистка

ИмяТаблицы = "Регистр3";
ОчиститьРегистрСведенийЧастично(ИмяТаблицы, КоличествоЭлементов);

// Справочники частичная очистка
ИмяСправочника = "Справочник1";
ОчиститьСправочникЧастично(ИмяСправочника, КоличествоЭлементов);

// Документы полная очистка
ИмяДокумента = "Документ1";
ОчиститьДокументЧастично(ИмяДокумента, КоличествоЭлементов);

Пишу скрип, для планировщика Windows.

В скрипте запускаю конфигуратор со ключами на сжатие базы данных:

%platform% CONFIG /F %base% /N %login%  /P %pass% /Out %file_log_compression% /DumpResult %file_result_compression% /DisableStartupMessages /DisableStartupDialogs /IBCheckAndRepair -IBCompression 

Тут же немного корректирую п. 1. добавляя  туда чтение файла результата сжатия:

РезультатСжатия = РезультатСжатиеБазы();
ДанныеПК.Вставить("Сжатие", РезультатСжатия);
Смотрю отчет и вижу что базы потихоньку уменьшаются.

Так же заметил, что от некоторых баз «РезультатСжатия» вернулся отрицательным. Оказалось, что базы были немного побиты, и после лечения тоже стали уменьшатся.

Ну, как видно базы немного похудели. 

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

Разрабатывалось на релизе платформы 8.3.18.1433
has been added to your cart:
Оформление заказа