Ответ в теме: Как контролировать рост и управлять таблицей 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С