Просмотр размера таблиц и количества записей в таблицах

16.01.24

База данных - Статистика базы данных

Простой отчет на СКД для просмотра размера таблиц и количества записей в основных таблицах базы данных.

Скачать исходный код

Наименование Файл Версия Размер
Отчет размера таблиц:
.erf 9,19Kb
549
.erf 1.1 9,19Kb 549 Скачать

Отчет получает размеры таблиц с помощью метода глобального контекста ПолучитьРазмерДанныхБазыДанных(). В документации сказано, что с помощью данного метода могут быть получены все данные, которые доступны пользователю для чтения, метод не учитывает размер истории данных и служебных таблиц платформы (индексы и т.д.). В справке так же сказано, что метод не учитывает размер расширений конфигурации, не совсем понятно что имеется ввиду под расширениями конфигураций, т.к. проверка на платформе 8.3.20.1710 показала, что метод успешно возвращает размеры всех таблиц, всех подключенных расширений. Возможно, в первых версиях, этот метод действительно не мог получить размеры таблиц расширений, а в справке так и осталось это примечание, не смотря на то, что метод нормально работает с таблицами расширений. Недостаток метода в том, что он работает довольно медленно и нельзя получить размер служебных таблиц. Но есть и большой плюс – метод работает не зависимо от используемой СУБД, в том числе и с файловыми базами. Данный метод доступен только начиная с платформы версии 8.3.15.1489. Если платформа ниже, то отчет вернет только количество записей в таблице. Несмотря на то, что получить можно размер только основных таблиц, этого вполне достаточно, чтобы проанализировать и найти какая таблица «распухла». 

Подобные разработки уже есть на Infostart, но они либо не на СКД, либо имеют др. недостатки. Данный же отчет выполнен на СКД, что позволяет «вертеть» данные как угодно, на свое усмотрение. Так же данный отчет позволяет выбрать только нужные менеджеры объектов для анализа, что может существенно сэкономить время, и изначально имеет 3 готовых варианта: 

  1. Основной – с группировкой по менеджерам объектов и сортировкой по размеру таблиц по убыванию, что бы сразу было видно самые большие таблицы в каждом менеджере объектов. 
  2. Краткий – просмотр общего размера каждого менеджера объектов с диаграммой;
  3. Линейный – просмотр всех таблиц одним списком, отсортированных по размеру, на случай если нужно сразу просмотреть топ самых больших таблиц без группировки по менеджерам;

Колонки размера можно настроить в разных единицах измерения - байтах, Кб, Мб, Гб и авто единица измерения (отчет сам поймет какую лучше показать в зависимости от размера). Отчет не имеет формы, так что нормально будет отображаться как в обычном приложении, так в управляемом. Но при просмотре отчета в обычном приложении механизмы платформы не позволяют переключать вариант отчета интерактивно, так что можете выбрать нужный вариант в конфигураторе или сделать свой вариант отчета или свой механизм интерактивного переключения вариантов. В управляемых форма проблем с настройками СКД никаких нет, особенно если у вас конфигурация на базе БСП.

Тестировалось на платформах 8.3.17.1549 и 8.3.20.1674, на файловых и серверных базах, самописных конфигурациях и ЗУП 3.1. Работать отчет должен на любой конфигурации и платформах 8.3, но на платформах ниже 8.3.15.1489 особого интереса не представляет.

 
 Обновление 16/01/2024. Версия 1.1

Добавлена возможность формировать отчет под пользователями без полных прав, т.е. если у текущего пользователя нет права на чтение какой-либо таблицы, то эта таблица будет пропущена и в отчет не попадет. Таким образом, появилась возможность формировать отчет под любым пользователем без выпадения исключительной ситуации в случае отсутствия прав на чтение таблицы, но тем не менее для получения максимально полной информации отчет нужно формировать под пользователями у которых есть право на чтение для всех таблиц. Кроме того получение количества записей таблиц сделано с учетом RLS, так что это тоже следует учесть.

Внимание! Выполнение может занять длительное время, особенно при большом объеме данных. Для полноты информации, отчет следует запускать под пользователем у которого есть права на чтение всех таблиц. Всем успехов!

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.14.208

ПолучитьРазмерДанныхБазыДанных размер БД СКД отчет

См. также

Размер таблиц серверной базы данных (для двух СУБД)

Статистика базы данных Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Объединен, унифицирован и значительно улучшен функционал двух исходных обработок для контроля размеров таблиц хранения 1С в серверных базах: https://infostart.ru/1c/tools/128362/ (для MS SQL) и https://infostart.ru/1c/tools/978816/ (для PG SQL).

1 стартмани

16.05.2024    744    8    yuraos    2    

8

Анализ документов: свертка базы, автотесты, динамика роста базы

Статистика базы данных Инструментарий разработчика Тестирование QA Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Абонемент ($m)

Внешняя обработка "Анализ документов и регистров" - можно использовать для детального изучения документов базы, связанных регистров (накопления и сведений). Предварительный анализ документов обычно требуется перед проведением свертки остатков базы, перед обновлением типовых релизов сильно измененной конфигурации, перед переходом на новую программу.

3 стартмани

29.12.2023    1335    10    RustIG    5    

8

Анализ использования номенклатуры

Статистика базы данных Логистика, склад и ТМЦ Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Очень часто хочется одним отчетом посмотреть, где и когда использовалась номенклатура. Вот это как раз такой отчет. Отчет полезен практически всем отделам предприятия. Им пользуются отделы закупок, продаж, работники складов, бухгалтеры.

1 стартмани

26.10.2023    867    13    dimanich70    0    

5

Сведения о присоединенных файлах

Статистика базы данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

24.10.2023    1818    42    ixijixi    6    

20

История фоновых заданий

Журнал регистрации Статистика базы данных HighLoad оптимизация Конфигурации 1cv8 Абонемент ($m)

Удобный отчет по выполнению фоновых заданий в 1С с разбивкой по разным критериям, например по срокам, в какой последовательности, выполнение дольше всех, сколько одновременно и так далее.

5 стартмани

04.09.2023    979    6    Maxiko    0    

8

Количество документов в информационной базе в разрезе видов документов

Статистика базы данных Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Отчет выводит на экран количество документов в информационной базе. Это позволяет косвенно оценить объем данных в информационной базе. Данная информация может быть полезна, например, если предполагается свернуть информационную базу на определенную дату. От количества документов очень сильно зависит время свертки базы.

1 стартмани

16.08.2023    757    18    pwn    1    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. МимохожийОднако 142 20.02.22 10:15 Сейчас в теме
4. frkbvfnjh 788 21.02.22 06:10 Сейчас в теме
2. Yashazz 4739 20.02.22 17:12 Сейчас в теме
Советую автору тщательнее поискать на ИС, потому что подобные разработки были во множестве, в т.ч. и на СКД. Ибо сие - очередной велосипед). Ну и насчёт единиц измерения - гораздо полезнее бывает знать в количествах записей, чем в байтах.
Sakuraso; t278; +2 Ответить
5. frkbvfnjh 788 21.02.22 06:21 Сейчас в теме
(2) Штош, предлагаю Вам выбрать лисапет на свой вкус. И хорошо бы ссылки оставлять на лисапеты в виде пруфов для сообщества, что б знали где смотреть, тем самым поможете старым публикациям, вдохнете в них новую жизнь!
BarsukM; Igor_Ryaboff; rostovtseff; alei1180; AndrewVVS; parshin; ixijixi; collider; pav249683; Kopitsa.k; pyrkin_vanya; apic; +12 Ответить
13. sapervodichka 6831 23.02.22 22:10 Сейчас в теме
(5) Даёшь базопузомер! Вот мой с опцией сравнения двух баз между собой https://infostart.ru/public/1093355/
6. apic 13 21.02.22 06:24 Сейчас в теме
(2) Как говориться, сила - в разнообразии...
Kopitsa.k; +1 Ответить
7. kser87 2444 21.02.22 14:15 Сейчас в теме
(2) "конкуренция" - волшебное слово, которое двигает процесс. А не советы в тот момент, когда их никто не просит
BarsukM; rostovtseff; KirillZ44; ixijixi; Kopitsa.k; apic; frkbvfnjh; +7 Ответить
3. RustIG 1642 20.02.22 17:14 Сейчас в теме
8. mephistofel 16 22.02.22 12:23 Сейчас в теме
Автор, спасибо за отчет! Было интересно посмотреть на нашу базу с такой точки зрения.
Вопрос. Есть ли глубокий смысл в использовании метода ПолучитьРазмерДанныхБазыДанных через Вычислить? Не первый раз вижу такой прием. Не понимаю в чем его смысл.
Прикрепленные файлы:
frkbvfnjh; +1 Ответить
9. frkbvfnjh 788 22.02.22 12:46 Сейчас в теме
(8) Да, смысл в том, что бы отчет не "падал", на платформах которые данный метод не поддерживают. Не нравится мне использовать в коде Вычислить и Выполнить, но иногда приходится.
mephistofel; +1 Ответить
10. frkbvfnjh 788 22.02.22 12:52 Сейчас в теме
(8) Попробуйте раскоментить верхнюю строчку и открыть отчет на платформе ниже 8.3.15 и посмотрите на эффект. В конфигураторе будут ошибки при синтаксическом контроле и в режиме предприятия отчет не должен открыться, а так хотя бы количество записей посмотреть можно будет.
mephistofel; +1 Ответить
11. Dach 377 22.02.22 15:35 Сейчас в теме
А какой смысл в использовании озвученного метода в отчете, если он действительно не показывает размер индексов и т.д.? Часто ведь именно индексы таблицы и весят больше всего
12. mephistofel 16 22.02.22 16:37 Сейчас в теме
(11) я вижу смысл. Если регистр весит 100 гигов и в нём десяток тысяч записей, то это повод для оптимизации.
Прикрепленные файлы:
frkbvfnjh; +1 Ответить
15. SnubbyAston 53 25.02.22 16:17 Сейчас в теме
(11) А еще смысл в том, что он должен работать для любой базы: файловой, PostgreSQL, MS SQL... И без указания логинов/паролей от скюля, которых может и не быть.
AndrewVVS; apic; frkbvfnjh; +3 Ответить
16. Dach 377 25.02.22 17:04 Сейчас в теме
(15) никакие логины-пароли не нужны, если используется доменная аутентификация на стороне СУБД

Проще через ADO выполнить прямой запрос (благо никаких особых прав не надо), пример уже привели в (14)

Так что справедливо только для файловой, но и то - для файловых уже давным-давно есть замечательный инструмент Tool1CD
14. kuzyara 2027 25.02.22 13:21 Сейчас в теме
аналогичный запрос для MSSQL, выполняется менее 1 секунды
select  t.name as TableName, Min(t.create_date) as CreateDate, SUM(p.rows) as Rows, SUM(u.total_pages) * 8 / 1024 as SizeMB 
fr om sys.tables as t
inner join sys.partitions as p on t.object_id = p.object_id
inner join sys.allocation_units as u on p.partition_id = u.container_id
inner join sys.data_spaces as ds on u.data_space_id = ds.data_space_id
group by t.name, ds.name
order by SizeMB desc
Прикрепленные файлы:
17. sergkom 3 22.04.22 10:55 Сейчас в теме
Странно как-то. По отчету все объекты весят 5 703,17 МБ

А архив весит 14Гб.
В SQL видно, что база 31Гб

Почему такая разница может быть?
Прикрепленные файлы:
18. frkbvfnjh 788 22.04.22 14:27 Сейчас в теме
(17) Потому что данный метод получения размера таблиц не может получать размер служебных таблиц (например размеры индексов), об этом сказано в публикации. Будем надеяться, что разработчики платформы будут расширять возможности метода, такую просьбу я уже написал им в группу Телеграмм Platform Suggester.
22. yuraos 999 16.01.24 08:27 Сейчас в теме
(18) Плюс этот метод вроде не учитывает расширения конфигурации.

Если это действительно так - то как быть,
если половина базы в расширении перепилена
19. Eaysmax 1 11.04.23 23:04 Сейчас в теме
fr om sys.tables as t(14)

Ошибочка вроде у Вас. From?
20. maksa2005 536 02.01.24 12:45 Сейчас в теме
размер не показал. виной что постгрес?
Прикрепленные файлы:
21. maksa2005 536 02.01.24 14:04 Сейчас в теме
а у меня оказывается 8.3.9. с 8.3.15 можно посмотреть программно размер бд
23. yuraos 999 16.01.24 09:49 Сейчас в теме
Так расширения конфигураций учитываются при подсчете размера таблиц?

Встроенная функция ПолучитьРазмерДанныхБазыДанных()
вроде бы их не учитывает судя по мануалу.
- https://infostart.ru/1c/tools/1608982/

А то у меня база,
половина функционала которой в расширении перепилена.
24. frkbvfnjh 788 16.01.24 10:31 Сейчас в теме
(23) Проверил на 8.3.20.1710 - таблицы расширений учитываются. Видимо в справке имеется ввиду размер самих расширений, хотя это странно, но метод не вызвал никаких исключений и получил размеры всех таблиц всех расширений. Думаю скорректирую публикацию.
25. yuraos 999 16.01.24 13:26 Сейчас в теме
Да, по крайней мере функция ПолучитьРазмерДанныхБазыДанных()
учитывает как-то добавленные в расширении реквизиты шапки.

что имеется ввиду в мануале - неясно (может как появился метод не учитывалось).


PS
Отсутствие размера индексов и служебных таблиц это конечно плохо.
- Они могут занимать очень прилично много места в базе.

Также бывает полезно знать не только размер данных, а также "использованное" место
и число строк в таблицах объекта в базе.


PSPS
кстати кто знает?
таблицы регистрации данных - это из тех "служебных таблиц" ???
26. frkbvfnjh 788 16.01.24 14:09 Сейчас в теме
(25) Да, согласен, что не совсем понятно что имеется ввиду под расширениями конфигураций, возможно в первых версиях, этот метод действительно не мог получить размеры таблиц расширений, а в справке так и осталось это примечание. Я скорректировал текст публикации, указав этот нюанс. Спасибо, что подняли этот вопрос.
Оставьте свое сообщение