Каталог решений - Растет как на дрожжах — сказ о поиске причины роста базы

Растет как на дрожжах — сказ о поиске причины роста базы

Растет как на дрожжах — сказ о поиске причины роста базы

В наличии

Статья посвящается разбору проблемы с таблицей `_SystemSettings`: неконтролируемый рост объёма и причины, его вызывающие. К статье прилагается полезная обработка для детального анализа настроек и чистки таблицы средствами 1С.

Категория:

Описание

Постановка задачи

Попалась на решение следующая задача: после перехода на 1С:Документооборот 3.0 база начала "пухнуть" — прирост идет +1 гб за один рабочий день. Платформа: 8.3.20.2180.

 

Подход к решению

Начинаем с анализа размера таблиц в СУБД. В топ вырвалась _SystemSettings, как по размеру, так и по динамике роста.

 

 

Причины роста

Подход к решению описан в теме на форме — вот ссылка. Причина роста таблицы — сохранение миллионов настроек из-за ошибок настройки формы или ошибок в коде.

1. Ошибка настроек. У формы есть два булевских свойства:

АвтоНавигационнаяСсылка — при каждом открытии генерирует новую навигационную ссылку 

АвтоматическоеСохранениеДанныхВНастройках — при закрытии сохраняет настройки формы в хранилище системных настроек

Если включить оба этих свойства, то при каждом вызове будет генерироваться новая навигационная ссылка, а при закрытии — по этой навигационной ссылке будут сохраняться настройки. Это приведёт к сохранению в базу данных миллионов записей вида: ...0978abfb_8f52_4070_aa7e_849dbe44c184/НастройкиОкна, которые никогда не будут считаны. (спасибо AllexSoft за подробный анализ проблемы).

2. Ошибки в коде — когда программный код является источником генерации подобного количества новых записей.

 

Порядок решения

Решение проблемы состоит из 3-х частей:

  1. Найти проблемные формы
  2. Исправить настройки или код
  3. Очистить "мёртвый груз" и провести регламенты на СУБД

Для анализа и исправления уже сделано много наработок коллегами:AllexSoft, TigerPXN и klinval. Я взял наработки коллег и объединил в одну обработку для повышения удобства использования. В конце статьи приведена ссылка на гитхаб, где лежат исходники. Кратко расскажу, как ей пользоваться созданной обработкой "Работа с системными настройками". 

 

 

"Анализ" — помогает найти проблемные настройки

  • читает настройки из базы (если выбран пользователь — будет установлен доп. отбор по пользователю);
  • выводит настройки на вкладку "Результаты анализа"; максимальное кол-во выводимых записей задаётся реквизитом "Обработать записей (max.)"
  • Подсчитывает количество записей, подходящие под указанные в таблице "Шаблоны поиска и удаления записей" шаблоны
    • Таблица предзаполнена шаблонами по ранее встречавшимся кейсам.

 

 

 

Подменю "Очистка настроек"

  • "Удалить с учетом шаблонов" — удаляет записи, которые подходят к одному из шаблонов, для которого в колонке "Удалить" в таблице "Шаблоны поиска и удаления записей" стоит признак "Истина". Количество удаляемых записей ограничено размером порции, указанной в настройке "Порции для удаления".
  • "Очистить историю работы пользователей" — очищает таблицу ИсторияРаботыПользователя.ОчиститьВсе().
  • "Очистить настройки несуществующих пользователей" — удаляет настройки пользователей, которые помечены на удаление или которых нет в справочнике "Пользователи"
  • "Удалить все настройки (без применения шаблонов)" — просто удаляет все настройки. Ограничено размером порции, указанной в настройке "Порции для удаления".

 

Благодарности, ссылки и использованные источники

Основной источник информации — тема на форуме: Как сократить размер таблицы _SYSTEMSETTINGS и почему она растет?

"Мы – только лишь карлики, стоящие на плечах гигантов". Отдельная благодарность камрадам: AllexSoft, TigerPXN и klinval за то, что поделились своими наработками.

Исходники разрабатываемой обработки лежат тут.

 

Заключение

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

1. Статьи про описание данной проблемы и способы её решения нет, а собирать информацию пробегаясь по форуму — не всегда хочется.

2. В теме на форуме обработки разделены и не были собраны в единый инструмент. А раз уж я всё это объединил — грех не поделиться. 

Спасибо за прочтение. С уважением, Вдовенко Сергей.

has been added to your cart:
Оформление заказа