После проведения свертки информационной базы 1С и выполнения процедур по удалению помеченных на удаление объектов, пользователи часто сталкиваются с ситуацией, когда размер файла базы остается подозрительно большим. Это вызывает вопросы о целесообразности предпринятых действий и поиске дальнейших путей оптимизации. В этой статье мы подробно разберем, почему такая ситуация возникает и какие шаги необходимо предпринять для фактического уменьшения размера базы 1С.
Давайте выясним, что скрывается за большим размером файла и как мы можем с этим эффективно бороться, не прибегая сразу к сложным миграциям на SQL Server, если проблема решаема средствами файлового режима.
Прежде всего, давайте проанализируем, почему удаление объектов и свертка не всегда приводят к мгновенному уменьшению размера базы:
Итак, мы видим, что простой свертки и удаления помеченных объектов недостаточно. Нам потребуются дополнительные действия, включая универсальное сжатие базы за счет очистки табличных частей.
Рассмотрим пошагово, какие инструменты и подходы мы можем использовать для оптимизации размера файловой базы 1С после свертки.
Тестирование и исправление информационной базы (ТИИ) — это мощный инструмент, доступный в Конфигураторе 1С, который предназначен для обслуживания и проверки целостности данных. Именно он позволяет физически удалить "мусор" и освободить место.
Важно: Перед выполнением любых операций ТИИ обязательно создайте полную резервную копию вашей информационной базы! Все действия должны выполняться в монопольном режиме, то есть когда никто из пользователей не работает с базой.
Для запуска ТИИ откройте Конфигуратор, перейдите в меню "Администрирование" -> "Тестирование и исправление...". Перед нами откроется окно с множеством опций. Для нашей задачи наиболее важны следующие:
Это ключевая опция для уменьшения физического размера базы. Она отвечает за физическое удаление данных, которые были помечены на удаление (например, документы, которые вы удалили после свертки) и освобождает место, которое они занимали. Если вы удаляли помеченные объекты, а база не уменьшилась, то именно эта галочка в первую очередь поможет решить проблему. В файловом режиме эта опция активно работает для уплотнения файла базы данных 1Cv8.1CD.
Эта опция проверяет базу на наличие "битых" ссылок, то есть ситуаций, когда один объект ссылается на другой, который уже был удален или отсутствует по какой-либо причине. Если вы установите флажок "Очищать ссылки", система автоматически удалит такие неактуальные ссылки. Это может помочь удалить ссылки на старые, уже несуществующие документы или элементы справочников, что также косвенно способствует очистке данных, которые удерживались этими ссылками. Эта операция особенно важна после массового удаления документов обработкой, в том числе и "удаляющей неудаляемые объекты", как было упомянуто в обсуждении.
Эта опция перестраивает индексы таблиц. Она не приводит к уменьшению размера базы напрямую, но существенно повышает ее быстродействие. После масштабных удалений данных индексы могут стать неоптимальными, поэтому реиндексация — это хорошая практика для поддержания производительности. Стоит отметить, что "реиндексация" и "сжатие" — это разные операции в ТИИ, и для уменьшения размера нам необходимо именно "сжатие".
Актуально для регистров накопления и бухгалтерии. Пересчитывает итоговые таблицы, что ускоряет формирование отчетов, но на размер базы влияет незначительно.
Рекомендация: Мы рекомендуем запустить ТИИ, выбрав следующие опции:
[ ] Проверка логической целостности информационной базы
[X] Проверка ссылочной целостности (с галочкой "Очищать ссылки")
[X] Пересчет итогов
[X] Реиндексация таблиц информационной базы
[X] Сжатие таблиц информационной базы
Обратите внимание, что процесс ТИИ может занять длительное время, особенно для больших баз. Например, как отметил один из участников обсуждения, удаление помеченных объектов может длиться 5-6 часов, а ТИИ — порядка 30 минут. Проявите терпение и, если есть возможность, проведите эти операции на копии базы, прежде чем применять к рабочей, чтобы оценить длительность и эффект.
После выполнения ТИИ, особенно со сжатием таблиц, часто рекомендуется выполнить процедуру выгрузки и последующей загрузки информационной базы. Эта операция часто упоминается как "выгрузка/загрузка" и является стандартным способом дополнительной оптимизации файла базы.
Это делается следующим образом:
.dt) в надежном месте..dt.Эта процедура позволяет полностью перестроить внутреннюю структуру файла базы данных 1Cv8.1CD. Иногда она помогает окончательно "утрамбовать" данные и удалить остаточные пустые блоки, которые могли не быть полностью удалены только ТИИ. Это своего рода "глубокая очистка" файловой базы, которая зачастую дает дополнительное уменьшение размера.
Автор исходного вопроса справедливо заметил, что хотел бы увидеть, какие именно таблицы занимают много места. В файловом режиме это действительно не так очевидно, как в SQL Server, где доступны мощные средства анализа. Однако существуют специальные внешние обработки, которые позволяют анализировать размер таблиц в файловой базе, несмотря на утверждение, что "в файловой этого не сделать".
Как найти такие обработки:
Мы можем поискать такие обработки на специализированных ресурсах для 1С-разработчиков и пользователей. Например, на сайте Infostart.ru по запросу "размер таблиц файловой базы" мы легко найдем множество таких инструментов. Эти обработки сканируют структуру файла 1Cv8.1CD и представляют информацию об объеме данных, занимаемом каждым объектом метаданных (справочниками, документами, регистрами сведений, регистрами накопления и регистрами бухгалтерии) в мегабайтах.
Используя такую обработку, мы сможем определить, какие именно объекты метаданных (например, конкретный справочник "Номенклатура", регистр "Партии товаров" или регистр бухгалтерии) являются "тяжелыми" после свертки. Это даст нам целенаправленную информацию для дальнейших действий, например, для анализа данных в этих конкретных объектах и их очистки, если они содержат неактуальную информацию. Это особенно полезно, когда, как было отмечено, есть "какие-то регистры и справочники, которые занимают много, но не имеют смысла после свертки". Для такой первичной оценки можно применить обработку обследования базы: она покажет размеры данных объектов средствами платформы. Индексы и пустое пространство файла .1CD она не измеряет.
Важный аспект: Максимальный размер одной таблицы в файловой базе 1С 8.3 составляет 4 ГБ. Если какая-то из ваших таблиц приближается к этому лимиту, это является сильным аргументом в пользу перехода на клиент-серверный вариант работы с базой данных, так как это может привести к проблемам с производительностью и стабильностью. Такие инструменты помогут вам заранее выявить потенциальные узкие места.
Как мы уже упоминали, служебные данные могут значительно увеличивать размер базы.
Система 1С может по умолчанию собирать данные о производительности. Эти данные хранятся в специальных регистрах сведений, например, РегистрыСведений.ЗамерыВремени, РегистрыСведений.ЗамерыДлительности и подобных. Со временем они могут накапливаться и занимать существенный объем дискового пространства, особенно если не были отключены после установки или обновления.
Для уменьшения размера базы нам необходимо:
ЗамерыВремени, ЗамерыДлительности). Откройте каждый такой регистр и удалите все записи, относящиеся к неактуальному периоду (или все записи, если замеры больше не нужны). После очистки данных из регистров обязательно выполните ТИИ со сжатием таблиц, чтобы физически освободить место.Журнал регистрации может хранить очень большой объем информации обо всех событиях в базе. Для его сокращения:
Регулярное обслуживание журнала регистрации является хорошей практикой.
Если в базе хранятся прикрепленные файлы (например, сканы первичных документов, договоров), это может быть одной из наиболее весомых причин большого размера. Рассмотрите возможность переноса этих файлов в тома на диске (если это поддерживается вашей конфигурацией и требуется функционально) или архивирования и удаления из базы наиболее старых и неактуальных файлов. Это может быть самый быстрый способ значительно уменьшить размер базы, если проблема именно в объеме хранимых файлов.
Основной вопрос автора темы касался целесообразности перевода базы в SQL для анализа размера и потенциального решения проблемы. Давайте разберем этот аспект.
Сама по себе конвертация файловой базы в SQL-базу не уменьшит ее размер. Более того, файл базы данных на SQL Server (например, .mdf для MS SQL Server) может оказаться даже больше, чем исходный файл .1CD, поскольку SQL Server имеет свою служебную информацию, механизмы управления дисковым пространством и более сложную структуру хранения данных и индексов.
Однако, переход на SQL Server предоставляет гораздо более мощные инструменты для анализа и оптимизации:
SELECT
t.name AS TableName,
SUM(p.rows) AS RowCounts,
SUM(a.total_pages) * 8 / 1024 AS TotalSpaceMB,
SUM(a.used_pages) * 8 / 1024 AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 / 1024 AS UnusedSpaceMB
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
WHERE
t.name NOT LIKE 'sys%' AND t.is_ms_shipped = 0 AND i.object_id > 255
GROUP BY
t.name
ORDER BY
TotalSpaceMB DESC;
Этот запрос покажет нам размер каждой таблицы в мегабайтах, количество строк и объем неиспользуемого пространства, что является незаменимым инструментом для выявления "толстых" мест и принятия решений о дальнейшей оптимизации.
Таким образом, хотя перевод на SQL Server не является прямым способом уменьшить размер базы, он предоставляет необходимые инструменты для глубокой диагностики и последующей, более эффективной, оптимизации. Если ваша база постоянно растет и достигает десятков гигабайт, рассмотрение перехода на клиент-серверный вариант является вполне оправданным шагом для долгосрочного решения проблем с размером и производительностью.
Уменьшение размера базы 1С после свертки и удаления помеченных объектов — это не одноразовое действие, а комплексный процесс. Мы убедились, что только пометка на удаление не освобождает место. Для достижения цели необходимо последовательно применять следующие шаги:
Помните, что каждый из этих шагов требует предварительного создания резервной копии данных. Последовательное применение этих рекомендаций позволит вам значительно уменьшить размер вашей информационной базы 1С и улучшить ее производительность.