Меню

Как в SQL Server 2014 получить размеры записей в таблице



Как определить размер таблиц в БД MS SQL

Для определения размера таблиц в базе данных, размещенной на сервере Microsoft SQL Server требуется выполнить следующие действия:
1. Подключиться к серверу баз данных, при помощи SQL Server Management Studio (SSMS)
2. Выбрать базу данных, размер таблиц которой необходимо определить
3. Выполнить SQL запрос:

где, «database_name» — имя базы данных, для которой необходимо получить список таблиц с размерами.
Размер таблиц базы данных будет указан к Килобайтах

Если необходимо получить ограниченных список таблиц, например, содержащих определенные слова в названии, то можно сократить вывод добавив условие (t.Name Like ‘%Filter%’) в конструкцию WHERE

где, Filter — это подстрока в названии таблицы

Другой способ получения размера таблиц в базе данных, это использование встроенной хранимой процедуры sp_spaceused. Хранимая процедура (stored procedure) sp_spaceused выводит количество строк, зарезервированное место на диске и место на диске, которое используется таблицей, индексированным представлением или очередью компонента Компонент Service Broker в текущей базе данных, либо выводит место на диске, зарезервированное и используемое всей базой данных.
Ниже показан пример предоставляются сведения о месте на диске для таблицы table_name и ее индексах в базе данных database_name, используя хранимую процедуру sp_spaceused:
Ниже показан пример предоставляются сведения о месте на диске для всех таблиц и ее индексах в базе данных database_name.

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

Чтобы узнать сколько места занимают индексы таблиц базы данных, то можно использовать следующий запрос:

Источник

Размеры таблиц SQL

Рейтинг: 43

  • Размер таблиц.png
  • Размеры таблиц БД.png
  • Параметры.png

Иногда хочется понять, какие таблицы занимают больше всего места? Может быть что-то можно удалить? Формируем структуру хранения, смотрим отчет в SQL по размеру таблиц. Сопоставляем по именам. Отчет делает именно это. Но написан на СКД. А значит можно рисовать графики, группировки и т.п.

Читайте также:  Старые единицы измерения в системе СИ Таблица

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

Особенности работы

Подготавливается два набора данных:

2. Запрос через SQLCMD с выводом результата во временный файл и парсингом этого файла.

Имя сервера SQL и Имя базы SQL — обязательные параметры. Имя пользователя SQL и Пароль пользователя SQL нужно указывать, если по каким-либо причинам нужно выполнить запрос размеров таблиц под другим пользователем.

При компоновке результата формируется CMD-файл, который выполняет команду sqlcmd и формирует файл-результат. По умолчанию, в каталог временных файлов на сервере. Но можно поменять серверный путь в параметре Путь к временным файлам.

Поскольку формируется и запускается cmd-файл, возможно сообщение системы безопасности.

Протестировано на версии платформы 1С 8.3.12.1714, MS SQL Server 14, Microsoft (R) SQL Server Command Line Tool Version 12.0.2000.8 NT. Сервер 1С и Сервер SQL на одной машине.

Источник

Sql как посмотреть размеры таблица

Рейтинг: 43

  • Размер таблиц.png
  • Размеры таблиц БД.png
  • Параметры.png

Иногда хочется понять, какие таблицы занимают больше всего места? Может быть что-то можно удалить? Формируем структуру хранения, смотрим отчет в SQL по размеру таблиц. Сопоставляем по именам. Отчет делает именно это. Но написан на СКД. А значит можно рисовать графики, группировки и т.п.

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

Особенности работы

Подготавливается два набора данных:

2. Запрос через SQLCMD с выводом результата во временный файл и парсингом этого файла.

Читайте также:  Экспорт важнейших товаров в 2020 году

Имя сервера SQL и Имя базы SQL — обязательные параметры. Имя пользователя SQL и Пароль пользователя SQL нужно указывать, если по каким-либо причинам нужно выполнить запрос размеров таблиц под другим пользователем.

При компоновке результата формируется CMD-файл, который выполняет команду sqlcmd и формирует файл-результат. По умолчанию, в каталог временных файлов на сервере. Но можно поменять серверный путь в параметре Путь к временным файлам.

Поскольку формируется и запускается cmd-файл, возможно сообщение системы безопасности.

Протестировано на версии платформы 1С 8.3.12.1714, MS SQL Server 14, Microsoft (R) SQL Server Command Line Tool Version 12.0.2000.8 NT. Сервер 1С и Сервер SQL на одной машине.

Источник

Как в SQL Server 2014 получить размеры записей в таблице?

Как в SQL Server 2014 получить размеры записей в таблице? Какой запрос нужно написать?

1 ответ 1

Можно, например, запросить статистику в sys.dm_db_index_physical_stats (ссылка).

Запрос для случая, когда на таблице не используется partitioning (секционирование):

Если секционирование используется, то данные по разным секциям нужно агрегировать (среднее лучше взять взвешенное по количеству записей в секции):

Обратите, однако, внимание. Если соответствующий запрос кроме строки с alloc_unit_type_desc равным IN_ROW_DATA возвращает также LOB_DATA или ROW_OVERFLOW_DATA с ненулевыми значениями (т.е. если в таблице есть LOB или variable-length столбцы с данными, из-за которых размер записи может превышать 8060 байт), то по данным возвращаемым sys.dm_db_index_physical_stats достоверно определить размеры записей таблицы не представляется возможным.

Дело в том, что одна запись таблицы физически может состоять из нескольких кусков (одного in-row и нескольких lob и row-overflow), но sys.dm_db_index_physical_stats не складывает данные по ним, а считает их отдельными «записями». Это можно видеть на следующем примере.

Читайте также:  Научный стиль понятие признаки и примеры

Если в таблицу с одним LOB столбцом вставить одну запись:

и посмотреть результат, который вернёт первый запрос для этой таблицы, то увидим

т.е. единственная вставленная нами запись состоит из 1+4=5 кусков. В LOB_DATA не один кусок с max_record_size

32 тыс. байт, а четыре куска по

8 тыс. байт, что не позволяет правильно оценить размер записи.

Поэтому, в случаях, когда записи таблицы имеют данные в LOB или row-overflow страницах, целесообразнее может быть попытаться оценить размеры записей с помощью функции datalength :

С datalength , однако, есть подводные камни.

Источник