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

16.01.24

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Отчет размера таблиц:
.erf 9,19Kb ver:1.1
695
695 Скачать (1 SM) Купить за 1 850 руб.

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

Анализ количества записей регистров/документов/справочников, в том числе в динамике.

13.11.2024    302    31    evgeni-red    2    

4

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

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

1 стартмани

11.09.2024    1068    13    m_kislyak    3    

9

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

Сбор статистики информационной базы в виде отчета - наименование конфигурации, версия, количество записей документов, регистров сведений, справочников, обменов.

1 стартмани

10.09.2024    3190    40    pahno    8    

7

Статистика базы данных Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Данная обработка - алгоритм предлагает оценку вашей базы на количество тех или иных типов документов с их реквизитами.

6 стартмани

12.08.2024    742    0    aximo    2    

3

Статистика базы данных Системный администратор Программист Платформа 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    1617    40    yuraos    3    

10

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

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

1 стартмани

29.12.2023    2140    13    RustIG    5    

9

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

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

1 стартмани

26.10.2023    1319    18    dimanich70    0    

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

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

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

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

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

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

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

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


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

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


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