В процессе сопровождения и оптимизации крупных информационных систем на платформе 1С программисты часто сталкиваются с необходимостью быстро оценить «вес» базы данных: понять, какие таблицы занимают больше всего места, где скопилось избыточное количество записей и какие регистры требуют оперативной очистки или свертки. Традиционно для этих целей используются специализированные обработки типа «Базопузомер», однако мощный комплекс «Инструменты разработчика» (ИР) также обладает встроенным функционалом для решения этих задач. Рассмотрим подробнее, как использовать ИР для анализа статистики базы данных, и разберем нюансы работы с высоконагруженными системами.
Начнем с самого простого и доступного способа. В «Инструментах разработчика» практически в любой форме, где представлен список метаданных (например, в Конструкторе запроса, Интерфейсной панели или Форме выбора объекта метаданных), предусмотрена специализированная кнопка «Сумма». Разберем принцип ее работы.
При нажатии на эту кнопку система инициирует процесс сбора данных о количестве строк в выбранных таблицах. Реализуется это через стандартные механизмы платформы — выполнение запроса ВЫБРАТЬ КОЛИЧЕСТВО(*) для каждого выбранного объекта. После завершения операции в списке метаданных появляется дополнительная колонка, отображающая число записей. Это позволяет быстро визуализировать распределение данных, не прибегая к написанию отдельных отчетов.
Рассмотрим, где именно можно найти этот функционал:
Если нам недостаточно простого количества строк и требуется более глубокое понимание того, как данные распределены на физическом уровне СУБД, мы воспользуемся инструментом «Структура хранения БД». Этот модуль является одним из самых мощных в составе ИР.
Проанализируем возможности этого инструмента:
РегистрНакопления.Продажи) с физическими именами таблиц в SQL (такими как _AccumReg123). Это критически важно при работе с прямыми запросами или анализе плана выполнения в SQL Server Management Studio.Выясним причину, по которой стандартный подсчет через КОЛИЧЕСТВО(*) может быть неприменим на крупных предприятиях. Как отмечают опытные разработчики, выполнение такого запроса на таблицах объемом в несколько сотен миллионов или миллиардов строк может привести к серьезным задержкам (так называемый hard-тормоз). Система будет вынуждена сканировать таблицу, что создает нагрузку на дисковую подсистему и процессор.
Если ваша база данных работает на Microsoft SQL Server, существует альтернативный, более быстрый способ получения статистики, который часто внедряется в расширения ИР или используется в качестве дополнения. Вместо прямого пересчета строк мы можем обратиться к системным представлениям SQL Server.
Проанализируем пример кода, который позволяет получить количество строк практически мгновенно, используя динамические административные представления (DMV):
// Пример логики для получения оперативной статистики из SQL Server
ТекстЗапросаSQL = "
|SELECT
| t.NAME AS TableName,
| s.Name AS SchemaName,
| p.rows AS RowCounts
|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.schemas s ON t.schema_id = s.schema_id
|WHERE
| t.NAME = 'ИмяТаблицыВSQL'
| AND i.index_id < 2"; // 0 для кучи, 1 для кластеризованного индекса
Использование подобных запросов через ADOConnection внутри «Инструментов разработчика» позволяет получать данные мгновенно даже для таблиц с миллиардами записей. Стоит учитывать, что точность этих данных зависит от актуальности статистики в SQL Server, но для целей оценки «пузомерности» базы погрешность обычно ничтожна.
Рассмотрим ситуацию, когда база данных является файловой. В этом случае у нас нет прямого доступа к SQL-статистике, и «Инструменты разработчика» ограничены стандартными запросами 1С. Для детального анализа веса таблиц в файловой базе рекомендуется использовать внешние утилиты, такие как Tool1CD, которые читают структуру файла напрямую. Однако в рамках ИР кнопка «Сумма» все равно остается основным инструментом для быстрой оценки количества строк, хоть она и будет работать медленнее на больших объемах.
Разберем, чем подход в «Инструментах разработчика» отличается от классических обработок для измерения объема базы:
Важный момент: В последних версиях «Инструментов разработчика» реализована возможность автоматизированного получения детальной статистики по размерам таблиц и индексов при наличии прав доступа к СУБД. Это фактически делает ИР полноценной заменой любым сторонним утилитам для анализа объема базы данных 1С.
Подведем итог нашему анализу. Если вам нужно быстро «прикинуть» количество записей в справочнике или регистре — смело используйте кнопку «Сумма» в интерфейсных панелях ИР. Если же вы работаете с высоконагруженной системой (Highload) и таблицами на сотни миллионов строк, рекомендуем переходить в раздел «Структура хранения БД» и использовать механизмы прямого анализа СУБД, чтобы избежать длительных блокировок и ожидания.
Помните, что программист 1С должен быть эффективным: вместо поиска новых инструментов часто достаточно изучить скрытые возможности уже установленного программного комплекса «Инструменты разработчика».