Как посмотреть объем базы 1с
Перейти к содержимому

Как посмотреть объем базы 1с

  • автор:

Как посмотреть объем базы 1с

Отличаются ли размеры баз в 1С v.8 в файловом и клиент-серверном вариантах? Или как узнать размер базы на сервере?

для скуля — файл MDF
и вобще — какая разница.
(1) + у SQL
«MDF = РазмерБазы + СвободноеМесто» на всякий случай

Хорошее название темы. Главное содержательное.

Прошу сильно не пинать.
Прошу не бить сковородой по голове.
Прошу не гнать грязными тряпками.
Прошу не посадить в газенваген.

По сабжу посмотреть размер файлов БД. Где лежат — в SQL Studio Manager можно посмотреть, если забыли.

Как узнать размеры таблиц для баз данных 1C-SQL

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

Теперь это неудобство будет ликвидировано. Представляю компактную обработку, которая не только выдает информацию о размерах данных и индексов в каждой пользовательской таблице базы данных, но, также выдает информацию о количестве строк в таблице. Кроме этого — выдается название таблицы, указывается, к какому объекту метаданных 1С данная таблица относится.

Кроме всего прочего, данная обработка решает еще одну проблему. Иногда записи в системных таблицах о текущих объемах таблиц не соответствуют действительности. Обработка позволяет ее подправить.

Для работы необходимо наличие библиотеки rainbow.dll в папке ИБ, которую можно взять здесь. За основу был взят текст хранимой процедуры sp_spaceused , который был подправлен так, чтобы быть полностью совместимым с Rainbow .

Текст обработки представлен ниже:

Перем СЗ ;
//________________________________________________________
Процедура ПодготовитьСЗ ()
глМета =СоздатьОбъект( «MetaDataWork» );
СЗ =СоздатьОбъект( «СписокЗначений» );
СЗ . Установить ( «_1SACCS» , «План счетов» );
СЗ . Установить ( «_1SACCSEL» , «Отбор проводок по счетам» );
СЗ . Установить ( «_1SBKTTL» , «Остатки (сальдо и обороты по субконто)» );
СЗ . Установить ( «_1SBKTTLC» , «Итоги (сальдо и обороты по синтетическим счетам)» );
СЗ . Установить ( «_1SCONST» , «Периодические константы» );
СЗ . Установить ( «_1SCORENT» , «Корректные проводки» );
СЗ . Установить ( «_1SCRDOC» , «Графы отбора и ссылки документов» );
СЗ . Установить ( «_1SDBSET» , «Базы данных (УРБД)» );
СЗ . Установить ( «_1SDNLOCK» , «Блокировка номеров документов» );
СЗ . Установить ( «_1SDWNLDS» , «Пакеты обмена данными (УРБД)» );
СЗ . Установить ( «_1SENTRY» , «Проводки» );
СЗ . Установить ( «_1SJOURN» , «Журналы документов» );
СЗ . Установить ( «_1SOPER» , «Операции» );
СЗ . Установить ( «_1SSBSEL» , «Отбор проводок по субконто» );
СЗ . Установить ( «_1SSTREAM» , «Последовательности» );
СЗ . Установить ( «_1SSYSTEM» , «Системная» );
СЗ . Установить ( «_1STOPER» , «Типовые операции» );
СЗ . Установить ( «_1SUIDCTL» , «Уникальности» );
СЗ . Установить ( «_1SUPDTS» , «Обновления объектов (УРБД)» );
СЗ . Установить ( «_1SUSERS» , «Счетчики соединений» );
СЗ . Установить ( «_1SCONNECT» , «Соединение» );
СЗ . Установить ( «CJPROP» , «Параметры ЖР» );
СЗ . Установить ( «CL» , «Календари» );
//Справочники
Для к = 1 по Метаданные. Справочник () Цикл
ТекИд =Метаданные. Справочник ( к ). Идентификатор ;
ТекИмяТаблицы = глМета . ИмяТаблицыСправочника ( ТекИд );
ТекНазваниеТаблицы = «Справочник.» + ТекИд ;
СЗ . Установить ( ТекИмяТаблицы , ТекНазваниеТаблицы );
КонецЦикла;
//Документы
Для к = 1 по Метаданные. Документ () Цикл
ТекИд =Метаданные. Документ ( к ). Идентификатор ;
ТекИмяТаблицы = глМета . ИмяТаблицыШапки ( ТекИд );
ТекНазваниеТаблицы = «Документ.» + ТекИд + » (шапка)» ;
СЗ . Установить ( ТекИмяТаблицы , ТекНазваниеТаблицы );
Если Метаданные. Документ ( к ). РеквизитТабличнойЧасти ()> 0 Тогда
ТекИмяТаблицы = глМета . ИмяТаблицыТабличнойЧасти ( ТекИд );
ТекНазваниеТаблицы = «Документ.» + ТекИд + » (таблица)» ;
СЗ . Установить ( ТекИмяТаблицы , ТекНазваниеТаблицы );
КонецЕсли;
КонецЦикла;
//Регистры
Для к = 1 по Метаданные. Регистр () Цикл
ТекИд =Метаданные. Регистр ( к ). Идентификатор ;
ТекИмяТаблицы = глМета . ИмяТаблицыИтогов ( ТекИд );
ТекНазваниеТаблицы = «Регистр.» + ТекИд + » (итоги)» ;
СЗ . Установить ( ТекИмяТаблицы , ТекНазваниеТаблицы );
ТекИмяТаблицы = глМета . ИмяТаблицыДвижений ( ТекИд );
ТекНазваниеТаблицы = «Регистр.» + ТекИд + » (движения)» ;
СЗ . Установить ( ТекИмяТаблицы , ТекНазваниеТаблицы );
КонецЦикла;
//Журналы расчета
Для к = 1 по Метаданные. ЖурналРасчетов () Цикл
ТекИд =Метаданные. ЖурналРасчетов ( к ). Идентификатор ;
ТекИмяТаблицы = глМета . ИмяТаблицыЖР ( ТекИд );
ТекНазваниеТаблицы = «Журнал расчетов.» + ТекИд ;
СЗ . Установить ( ТекИмяТаблицы , ТекНазваниеТаблицы );
КонецЦикла;
КонецПроцедуры
//________________________________________________________
Процедура Сформировать ()
ПодготовитьСЗ ();
ТЗ =СоздатьОбъект( «ТаблицаЗначений» );
ТЗ . НоваяКолонка ( «Имя» , «Строка» );
ТЗ . НоваяКолонка ( «Название» , «Строка» );
ТЗ . НоваяКолонка ( «Количество» , «Число» );
ТЗ . НоваяКолонка ( «Всего» , «Число» );
ТЗ . НоваяКолонка ( «Данные» , «Число» );
ТЗ . НоваяКолонка ( «Индексы» , «Число» );
ТЗ . НоваяКолонка ( «Свободно» , «Число» );
СписокТаблиц =СоздатьОбъект( «СписокЗначений» );
//________________________________________________________
ЗапросРадуги =СоздатьОбъект( «ODBCQuery» );
Если ЗапросРадуги . Prepare ( «Select RTRIM(CONVERT(char(30),TABLE_NAME)) from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=’BASE TABLE’ AND TABLE_NAME<>‘dtproperties'» , 0 , 0 )= 1 Тогда
Если ЗапросРадуги . Open ()= 1 Тогда
ЗапросРадуги . GotoNext ();
Пока ЗапросРадуги . IsOK ()= 1 Цикл
СписокТаблиц . ДобавитьЗначение ( ЗапросРадуги . GetString ( 0 ));
ЗапросРадуги . GotoNext ();
КонецЦикла;
ЗапросРадуги . Close ();
Иначе
Предупреждение( «Ошибка открытия запроса!» , 10 );
КонецЕсли;
ЗапросРадуги . Reset ();
Иначе
Предупреждение( «Ошибка выполнения запроса!» , 10 );
КонецЕсли;
//Теперь анализируем
Для к = 1 по СписокТаблиц . РазмерСписка () Цикл
ТекстЗапроса = «DECLARE @id int
|DECLARE @pages int
|DECLARE @rows int
|DECLARE @reserved dec(15)
|DECLARE @data dec(15)
|DECLARE @indexp dec(15)
|DECLARE @unused dec(15)
|SELECT @id = id FROM sysobjects WHERE >+ СписокТаблиц . ПолучитьЗначение ( к )+ «‘)
|SELECT @reserved=SUM(reserved) FROM sysindexes WHERE indid in (0, 1, 255) and >
|SELECT @pages = SUM(dpages) FROM sysindexes WHERE indid
|SELECT @pages = @pages + isnull(SUM(used), 0) FROM sysindexes WHERE indid = 255 and >
|SET @data = @pages
|SET @indexp = (select SUM(used) FROM sysindexes WHERE indid in (0, 1, 255) and — @data
|SET @unused = @reserved — (SELECT SUM(used) FROM sysindexes WHERE indid in (0, 1, 255) and >
|SELECT @rows=rows FROM sysindexes WHERE indid
|SELECT name = RTRIM(CONVERT(char(30),object_name(@id))), rows = RTRIM(CONVERT(char(11), @rows)),
|reserved = LTRIM(str(@reserved * d.low / 1024.,15,0)),data = LTRIM(str(@data * d.low / 1024.,15,0)),
|index_size = LTRIM(str(@indexp * d.low / 1024.,15,0)),unused = LTRIM(str(@unused * d.low / 1024.,15,0))
|FROM master.dbo.spt_values d WHERE d.number = 1 and d.type = ‘E'» ;
Если ЗапросРадуги . Prepare ( ТекстЗапроса , 0 , 0 )= 1 Тогда
Если ЗапросРадуги . Open ()= 1 Тогда
ЗапросРадуги . GotoNext ();
Пока ЗапросРадуги . IsOK ()= 1 Цикл
ТЗ . НоваяСтрока ();
ТЗ . Имя = ЗапросРадуги . GetString ( 0 );
ТЗ . Название = СЗ . Получить ( ТЗ . Имя );
ТЗ . Количество =Число( ЗапросРадуги . GetString ( 1 ));
ТЗ . Всего =Число( ЗапросРадуги . GetString ( 2 ));
ТЗ . Данные =Число( ЗапросРадуги . GetString ( 3 ));
ТЗ . Индексы =Число( ЗапросРадуги . GetString ( 4 ));
ТЗ . Свободно =Число( ЗапросРадуги . GetString ( 5 ));
ЗапросРадуги . GotoNext ();
КонецЦикла;
ЗапросРадуги . Close ();
Иначе
Предупреждение( «Ошибка открытия запроса!» , 10 );
Прервать;
КонецЕсли;
ЗапросРадуги . Reset ();
Иначе
Предупреждение( «Ошибка выполнения запроса!» , 10 );
Прервать;
КонецЕсли;
КонецЦикла;
ЗапросРадуги = «» ;
//________________________________________________________
Таб =СоздатьОбъект( «Таблица» );
Таб . ИсходнаяТаблица ( «Таблица» );
Таб . ВывестиСекцию ( «Заголовок» );
ТЗ . ВыбратьСтроки ();
Пока ТЗ . ПолучитьСтроку ()= 1 Цикл
Таб . ВывестиСекцию ( «Строка» );
КонецЦикла;
Таб . ВывестиСекцию ( «Итоги» );
Таб . Опции ( 0 , 0 , 0 , 0 );
Таб . ТолькоПросмотр ( 1 );
Таб . Показать ();
КонецПроцедуры
//________________________________________________________
Процедура Обновить ()
ЗапросРадуги =СоздатьОбъект( «ODBCQuery» );
ТекстЗапроса = «DBCC UPDATEUSAGE (0) WITH NO_INFOMSGS» ;
Если ЗапросРадуги . Prepare ( ТекстЗапроса , 0 , 0 )= 1 Тогда
Если ЗапросРадуги . Open ()= 1 Тогда
Иначе
Предупреждение( «Ошибка открытия запроса!» , 10 );
КонецЕсли;
ЗапросРадуги . Reset ();
Иначе
Предупреждение( «Ошибка выполнения запроса!» , 10 );
КонецЕсли;
ЗапросРадуги = «» ;
КонецПроцедуры
//________________________________________________________
Процедура ПриОткрытии ()
ЗагрузитьВнешнююКомпоненту( «rainbow.dll» );
КонецПроцедуры

Эту обработку можно загрузить в разделе «Скачать».

Сокращение объема базы в облаке

personal photo

Объем базы данных, как правило, возрастает после проведения обновления. Для того, что бы сократить размер информационной базы «1С: Предприятие» необходимо выгрузить и загрузить информационную базу.

Перед выгрузкой базы данных необходимо убедиться, что с базой никто не работает. Для этого Вам необходимо загрузить 1С в режиме конфигуратора.

Загрузить 1С в режиме конфигуратора

Затем перейти к пункту «Администрирование» и в ниспадающем меню выбрать «Активные пользователи»

Активные пользователи

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

При выгрузке базы убедитесь, что с базой никто не работает

После того, как мы убедились в том, что с базой никто не работает – можно делать выгрузку.

Выгрузить информационную базу

Опять заходим в пункт «Администрирование» и из ниспадающего меню выбираем «Выгрузить информационную базу…»

Выбрать файл для сохранения информационной базы

и затем выбрать папку, куда сохранить файл информационной базы.

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

После окончания выгрузки на экране появится следующее окно.

В данном окне так же указан путь, по которому находиться файл информационной базы. Нажмите «ОК».

Путь с файлом информационной базы

Теперь, опять заходим в пункт «Администрирование» и из ниспадающего меню выбираем «Загрузить информационную базу …».

Загрузить информационную базу

в следующем диалоговом окне, выбрать файл, который мы только что выгрузили, и нажать «Открыть» (путь к файлу и имя были отражены в предыдущем окне).

На запрос системы отвечаем «Да».

На запрос системы отвечаем «Да».

После загрузки информационной базы появится следующее окно, в котором необходимо согласиться на перезапуск конфигуратора.

Согласиться на перезапуск конфигуратора

В результате наших действий информационная база уменьшится, за счёт удаления временных файлов.

Размер таблиц 1С

Рассмотрим, как определять размер таблиц информационной базы данных в 1С, при помощи специальной обработки. Такая обработка позволит производить оценку размеров различной 1С таблицы SQL, использовать её можно как и файловыми базами данных, так и серверными базами данных.
Если обработка будет использована для 1С 8.3 файловой базы, то можно будет узнать таблицы, которые в будущем создадут проблемы, в виде превышения наибольшего возможного размера для файловой базы.
Стоит отметить, что максимальный разрешённый размер одной таблицы, 1С 8.3 файловая база – это 4 Гб. В случае, когда большинство таблиц, по размеру, приближаются к 4 Гб, то стоит задуматься о том, что б перейти на серверную информационную базу данных 1С.

2. Файл обработки в 1С для определения табличных размеров

Для того чтобы запустить обработку – кликаем на «Файл», переходим по кнопке «Открыть» и выбираем нужный файл обработки 1С. Как только данная обработка будет запущена – внутри неё отобразятся те объекты, для которых можно определять табличные размеры. К таким объектам можно отнести: документацию, справочные материалы, планы, регистр база данных
Саму обработку можно найти на официальных сайтах продукции компании 1С. Пример работы обработки Рассмотрим то, как будут действовать обработки 1С Розница

Размер таблиц 1С

Отображение размера каждого из объектов отображается в Мб. Чтобы увидеть размер конкретной таблицы – кликаем по ней и избираем действие показать таблицу размеров. Стоит отметить, если таблица содержит много данных, то такое определение может занять немного времени.

Показать таблицу размеров

Можно узнавать размер не только для конкретной таблицы, но и для объектов, в общем, аналогично избираем объект из корня и кликаем по кнопке показать таблицу размеров, как демонстрируется ниже:

1С 8 регистры накопления

3. Особенности обработки

База данных MSSQL Стоит отметить, что эта обработка примечательна тем, что в ней не задействуется принцип работы 1С ADODB по соединению базы данных MSSQL, это весьма удобно, так как редко, когда есть постоянный доступ к MSSQL, кроме как у администратора. Но в обработке по определению размера таблиц необходимо будет воспользоваться следующим файлом csy, который формируется внутри консоли MSSQL, выглядит он так:

База данных MSSQL, файл csy

Вывод. В данной статье была рассмотрена работа и функциональность 1С обработки, которая отвечает за определение размера таблиц баз данных 1С. Были показаны скриншоты-примеры работы обработки, а также её особенности.
Специалист компании «Кодерлайн»
Айдар Фархутдинов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *