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

28.02.23

База данных - Инструменты администратора БД

Статья посвящается разбору проблемы с таблицей `_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. В теме на форуме обработки разделены и не были собраны в единый инструмент. А раз уж я всё это объединил - грех не поделиться. 

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

Database Compression Tool

Инструмент для свертки и сжатия баз данных 1С

2–3 раза
Сокращение размера базы
1С
Поддержка любых конфигураций
Многопоточность
Параллельная обработка данных
Подробнее →

Доступна демо-версия с прогнозом результата

Вступайте в нашу телеграмм-группу Инфостарт

_SystemSettings таблица

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    83268    432    171    

362

Инструменты администратора БД Роли и права Системный администратор Разработчик Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 руб.

06.12.2023    25073    85    14    

118

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    28746    103    46    

107

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    4169    12    0    

25

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    52957    145    164    

98

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    47845    33    15    

51
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AllexSoft 28.02.23 12:32 Сейчас в теме
не ожидал что еще та моя тема актуальна до сих пор)
Обработка по поиску таких случаев супер, пригодилась бы тогда
2. SerVer1C 1146 28.02.23 14:50 Сейчас в теме
Тема интересная, но где и когда она проявляется? Только что проверил на ФормеСписка РегистраСведений - включены "АвтоНавигационнаяСсылка" и "АвтоматическоеСохранениеДанныхВНастройках" - лишних записей по данной форме в настройках нет (всегда только 6 записей в моем случае). Платформа 8.3.20.1914. Встречал базы с большими таблицами "_SystemSettings", но может они наполнялись на старых платформах ?
3. AllexSoft 28.02.23 16:15 Сейчас в теме
(2) надо что бы какие то данные форм были сохраняемые, какой то реквизит формы у которого стоит Сохранять
4. SerVer1C 1146 28.02.23 16:17 Сейчас в теме
(3) Так это понятно. Так и есть. Но новые записи по данной форме НЕ создаются.

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

Судя по этому высказыванию, механизм сохранения настроек НЕ должен работать вообще.
5. AllexSoft 28.02.23 16:27 Сейчас в теме
(4) ну раньше он работал точно.. сейчас не знаю как обстоит ситуация с актуальными платформами
6. SerVer1C 1146 28.02.23 16:30 Сейчас в теме
(5) Сейчас тоже работает.
7. SerVer1C 1146 28.02.23 16:31 Сейчас в теме
Думаю, что автору необходимо провести более подробное исследование возникновения проблемы, а не наводить панику.
8. zeltyr 754 28.02.23 19:09 Сейчас в теме
(7) В проблемной базе была форма справочника со включенными настройками и записей в таблице было порядка ~3 млн. Поэтому и сделал вывод, что проблема этих двух настроек осталась. Возможно поторопился. Вводить в заблуждение точно никого не хотел. Представиться возможность - детальнее перепроверю.
9. Aleksey79 13.08.25 12:13 Сейчас в теме
Здравствуйте!
Не нашел на гитхабе обработку очистки SystemSettings. Очень нужна. Прошу поделиться!
Для отправки сообщения требуется регистрация/авторизация