Как контролировать рост и управлять таблицей binarydata в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как контролировать рост и управлять таблицей binarydata в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #37019
      Фото аватараOdineski
      Участник

        Что за таблица binarydata в 1С, для чего она нужна, почему она разрастается до больших размеров и как это исправить?

      • #37020
        bot_avaOdin — Одинэсник
        Участник

          Таблица binarydata в 1С — это системная таблица, которая хранит двоичные данные (BLOB) — вложения, файлы, изображения, большие объекты, прикреплённые к документам, справочникам, регистрам и другим объектам базы.

          ### Для чего нужна таблица binarydata
          — Хранение вложенных файлов (например, сканы, фотографии, документы).
          — Хранение больших объектов, которые нельзя или неудобно хранить в обычных полях.
          — Используется платформой 1С для работы с файлами, прикреплёнными к объектам метаданных.

          ### Почему таблица binarydata разрастается до больших размеров
          — В базе копится много вложенных файлов, которые не удаляются.
          — Вложения не очищаются после удаления объектов, к которым они были прикреплены (например, удалённые документы с вложениями).
          — Частое добавление больших файлов без регулярной очистки.
          — Отсутствие регламентных процедур по очистке или архивированию вложений.
          — В некоторых случаях — ошибки в конфигурации или в обработке вложений, из-за которых файлы остаются «висячими» в таблице.

          ### Как исправить и контролировать рост таблицы binarydata

          1. Анализ и очистка «висячих» вложений
          Нужно найти вложения, которые не связаны с активными объектами (например, удалённые документы, справочники). Для этого можно использовать специальные обработки или запросы к базе, которые выявляют «мёртвые» ссылки на вложения, и удалить их.

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

          3. Архивирование и очистка старых вложений
          Если вложения нужны для истории, но не для активной работы, можно их архивировать в отдельное хранилище или выгружать из базы.

          4. Оптимизация работы с вложениями в конфигурации
          — Проверить, нет ли избыточного хранения больших файлов.
          — Использовать внешние хранилища (например, файловые серверы) для больших вложений, если это поддерживается конфигурацией.
          — Минимизировать размер вложений (сжатие, уменьшение разрешения изображений).

          5. Технические меры
          — В клиент-серверном варианте базы можно использовать средства СУБД для сжатия и очистки данных.
          — Периодически выполнять перестроение индексов и оптимизацию базы.

          6. Мониторинг размера таблицы
          Используйте SQL-запросы или обработки для мониторинга размера таблицы binarydata, чтобы вовремя реагировать на рост.

          ### Пример запроса для оценки размера таблицы binarydata в MS SQL

          |SELECT
          | t.NAME AS TableName,
          | s.Name AS SchemaName,
          | p.rows AS RowCounts,
          | SUM(a.total_pages) * 8 AS TotalSpaceKB,
          | SUM(a.used_pages) * 8 AS UsedSpaceKB,
          | (SUM(a.total_pages) — SUM(a.used_pages)) * 8 AS UnusedSpaceKB
          |FROM
          | sys.tables t
          |INNER JOIN
          | sys.indexes i ON t.OBJECT_ID = i.object_id
          |INNER JOIN
          | sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
          |INNER JOIN
          | sys.allocation_units a ON p.partition_id = a.container_id
          |INNER JOIN
          | sys.schemas s ON t.schema_id = s.schema_id
          |WHERE
          | t.NAME = ‘binarydata’
          |GROUP BY
          | t.Name, s.Name, p.Rows
          |ORDER BY
          | TotalSpaceKB DESC

          Рекомендую посмотреть здесь:
          https://infostart.ru/public/95193/ — обработка для анализа и очистки больших таблиц и вложений
          https://infostart.ru/public/19821/ — структура хранения таблиц и индексов в 1С, поможет понять, как устроена таблица binarydata
          https://infostart.ru/articles/200268/ — методы борьбы с ошибками загрузки и проблемами с большими таблицами, включая binarydata

          Если база файловая и таблица binarydata растёт — это серьёзный повод подумать о переходе на клиент-серверный вариант (MS SQL или PostgreSQL), где есть больше инструментов для контроля и оптимизации хранения больших данных.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С