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

16.01.24

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

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

Скачать файлы

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

Отчет получает размеры таблиц с помощью метода глобального контекста ПолучитьРазмерДанныхБазыДанных(). В документации сказано, что с помощью данного метода могут быть получены все данные, которые доступны пользователю для чтения, метод не учитывает размер истории данных и служебных таблиц платформы (индексы и т.д.). В справке так же сказано, что метод не учитывает размер расширений конфигурации, не совсем понятно что имеется ввиду под расширениями конфигураций, т.к. проверка на платформе 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

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

См. также

Физический размер таблиц (MSSQL)

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

Инструмент для получения физического размера таблиц ИБ (MSSQL)

1 стартмани

09.01.2024    1385    12    ImHunter    4    

7

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

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

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

3 стартмани

29.12.2023    1106    9    RustIG    5    

7

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

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

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

1 стартмани

26.10.2023    720    12    dimanich70    0    

4

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

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

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

2 стартмани

24.10.2023    1596    36    ixijixi    5    

19

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

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

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

5 стартмани

04.09.2023    797    6    Maxiko    0    

8

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

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

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

1 стартмани

16.08.2023    640    14    pwn    1    

3

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

Журнал регистрации Статистика базы данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Абонемент ($m)

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

5 стартмани

30.06.2023    1867    10    nemec    6    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. МимохожийОднако 141 20.02.22 10:15 Сейчас в теме
4. frkbvfnjh 785 21.02.22 06:10 Сейчас в теме
2. Yashazz 4709 20.02.22 17:12 Сейчас в теме
Советую автору тщательнее поискать на ИС, потому что подобные разработки были во множестве, в т.ч. и на СКД. Ибо сие - очередной велосипед). Ну и насчёт единиц измерения - гораздо полезнее бывает знать в количествах записей, чем в байтах.
Sakuraso; t278; +2 Ответить
5. frkbvfnjh 785 21.02.22 06:21 Сейчас в теме
(2) Штош, предлагаю Вам выбрать лисапет на свой вкус. И хорошо бы ссылки оставлять на лисапеты в виде пруфов для сообщества, что б знали где смотреть, тем самым поможете старым публикациям, вдохнете в них новую жизнь!
Igor_Ryaboff; rostovtseff; alei1180; AndrewVVS; parshin; ixijixi; collider; pav249683; Kopitsa.k; pyrkin_vanya; apic; +11 Ответить
13. sapervodichka 6697 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 2438 21.02.22 14:15 Сейчас в теме
(2) "конкуренция" - волшебное слово, которое двигает процесс. А не советы в тот момент, когда их никто не просит
rostovtseff; KirillZ44; ixijixi; Kopitsa.k; apic; frkbvfnjh; +6 Ответить
3. RustIG 1351 20.02.22 17:14 Сейчас в теме
8. mephistofel 14 22.02.22 12:23 Сейчас в теме
Автор, спасибо за отчет! Было интересно посмотреть на нашу базу с такой точки зрения.
Вопрос. Есть ли глубокий смысл в использовании метода ПолучитьРазмерДанныхБазыДанных через Вычислить? Не первый раз вижу такой прием. Не понимаю в чем его смысл.
Прикрепленные файлы:
frkbvfnjh; +1 Ответить
9. frkbvfnjh 785 22.02.22 12:46 Сейчас в теме
(8) Да, смысл в том, что бы отчет не "падал", на платформах которые данный метод не поддерживают. Не нравится мне использовать в коде Вычислить и Выполнить, но иногда приходится.
mephistofel; +1 Ответить
10. frkbvfnjh 785 22.02.22 12:52 Сейчас в теме
(8) Попробуйте раскоментить верхнюю строчку и открыть отчет на платформе ниже 8.3.15 и посмотрите на эффект. В конфигураторе будут ошибки при синтаксическом контроле и в режиме предприятия отчет не должен открыться, а так хотя бы количество записей посмотреть можно будет.
mephistofel; +1 Ответить
11. Dach 372 22.02.22 15:35 Сейчас в теме
А какой смысл в использовании озвученного метода в отчете, если он действительно не показывает размер индексов и т.д.? Часто ведь именно индексы таблицы и весят больше всего
12. mephistofel 14 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 372 25.02.22 17:04 Сейчас в теме
(15) никакие логины-пароли не нужны, если используется доменная аутентификация на стороне СУБД

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

Так что справедливо только для файловой, но и то - для файловых уже давным-давно есть замечательный инструмент Tool1CD
14. kuzyara 1900 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 785 22.04.22 14:27 Сейчас в теме
(17) Потому что данный метод получения размера таблиц не может получать размер служебных таблиц (например размеры индексов), об этом сказано в публикации. Будем надеяться, что разработчики платформы будут расширять возможности метода, такую просьбу я уже написал им в группу Телеграмм Platform Suggester.
22. yuraos 991 16.01.24 08:27 Сейчас в теме
(18) Плюс этот метод вроде не учитывает расширения конфигурации.

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

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

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

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

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


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

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


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