Разное

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

Содержание

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

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

USE {database_name};
GO 
 
SELECT
  t.Name                                       AS TableName,
  s.Name                                       AS SchemaName,
  p.Rows                                       AS RowCounts,
  SUM(a.total_pages) * 8                       AS TotalSpaceKB,
  SUM(a.used_pages) * 8                        AS UsedSpaceKB,
  (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
  sys.tables t
  INNER JOIN sys.indexes i ON t.object_id = i.object_id
  INNER JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
  INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
  LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE
  t.Name NOT LIKE 'dt%'
  AND t.is_ms_shipped = 0
  AND i.object_id > 255
GROUP BY
  t.Name, s.Name, p.Rows
ORDER BY
  t.Name;
GO

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

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

WHERE
  t.Name NOT LIKE 'dt%'
  AND t.Name Like '%Filter%'
  AND t.is_ms_shipped = 0
  AND i.object_id > 255

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

Другой способ получения размера таблиц в базе данных, это использование встроенной хранимой процедуры sp_spaceused. 

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

Ниже показан пример предоставляются сведения о месте на диске для таблицы table_name и ее индексах в базе данных database_name, используя хранимую процедуру sp_spaceused:

USE {database_name};  
GO  
EXEC sp_spaceused N'{dbo}.{table_name}';  
GO  

Ниже показан пример предоставляются сведения о месте на диске для всех таблиц и ее индексах в базе данных database_name.

USE {database_name};  
GO  
sp_msforeachtable N'EXEC sp_spaceused [?]';  
GO

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

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

USE {database_name};  
GO  

SELECT
  OBJECT_NAME(i.object_id) AS TableName,
  i.name                   AS IndexName,
  i.index_id               AS IndexID,
  8 * SUM(a.used_pages)    AS 'Indexsize(KB)'
FROM
  sys.indexes AS i
  JOIN sys.partitions AS p ON p.object_id = i.object_id AND p.index_id = i.index_id
  JOIN sys.allocation_units AS a ON a.container_id = p.partition_id
GROUP BY
  i.OBJECT_ID, i.index_id, i.name
ORDER BY
  OBJECT_NAME(i.object_id),
  i.index_id

Как узнать размер таблиц в базе данных

У меня есть большая база данных Mysql. Его размеры больше, чем я ожидал.

Как я могу найти размер его таблиц ? Мне нужно найти эту таблицу, которая делает размер базы данных огромным.

Спасибо.

mysql

Поделиться

Источник


hd.    

19 апреля 2013 в 06:43

2 ответа




2

Вы можете сделать это, как показано ниже.

SELECT table_schema "Data Base Name", 
      sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" 
FROM information_schema.TABLES GROUP BY table_schema

читать здесь

Поделиться


Dipesh Parmar    

19 апреля 2013 в 06:47



-1

используйте этот запрос

show table status from <db_name>;

если ваше имя базы данных-пользователи, то используйте это :

show table status from users;

Проверьте Это-Mysql Руководство Пользователя

Поделиться


Suhel Meman    

19 апреля 2013 в 06:49


Похожие вопросы:

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

Моя база данных postgres (версия 8.2.3) показывает размер 24 GB. Чтобы получить эту цифру, я выполняю этот запрос: SELECT oid, datname, pg_database_size(datname) as actualsize,…

Сколько таблиц достаточно в одной базе данных

Я создаю веб-сайт как блог в PHP , используя сервер базы данных MySQL . На этом сайте я также разрешаю пользователю создавать свой собственный блог. Когда пользователь создает новый блог на моем…

как узнать имя таблицы в подключенной базе данных в c#

у меня есть база данных, которая уже создана из sql, и я устанавливаю соединение с ней, есть ли какой-либо способ, с помощью которого я могу узнать имена таблиц в этой базе данных из c#, как я знаю…

Как узнать размер байта результатов, возвращаемых всеми различными запросами SQL, выполняемыми в базе данных Oracle?

Для некоторого проекта калибровки мне нужно узнать размер байта результатов, возвращаемых всеми различными запросами SQL, выполняемыми в базе данных Oracle. Есть предложения?

Запрос для определения размера таблиц в базе данных? (mysql)

Сайт How to calculate the MySQL database size дает два запроса: Определение размеров всех баз данных SELECT table_schema Data Base Name, SUM( data_length + index_length) / 1024 / 1024 Data Base Size…

Размер таблицы в базе данных

Я новичок в SQL и знаю, как получить размер базы данных с помощью EXEC sp_spaceused у меня есть вопрос, как я могу получить размер таблицы в базе данных Sql Server. как таблица сотрудников в базе…

Как найти количество таблиц, созданных в базе данных в hive?

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

Count количество таблиц в базе данных SQL Server

У меня есть база данных SQL Server 2012 под названием MyDatabase . Как узнать, сколько таблиц находится в базе данных? Я предполагаю, что формат запроса будет примерно следующим, но я не знаю, чем…

Как я могу узнать размер базы данных конкретной базы данных в MYSQL?

У меня есть база данных с именем ‘phonebook’. Он содержит более 10 таблиц с умеренным объемом данных. Теперь я хочу узнать размер базы данных этой базы данных ‘phonebook’ с помощью запроса MySQL….

Как узнать общий размер базы данных Hive

у меня есть база данных с 10 таблицами. все 10 таблиц данных хранятся в разных местах. из 10 таблиц некоторые являются управляемыми, а некоторые-внешними. расположение некоторых таблиц -…

Размер таблиц в БД MS SQL SERVER отсортированный по убыванию: speshuric — LiveJournal

Когда-то я это написал, но один раз я этот скрипт терял. Недавно нашёл его. В силу лени больше не хочу терять.

select
case when grouping (so.name) = 1 then 'Итого:' else so.name end name,
8*sum(si.data_pages) data, 
8*sum(si.index_pages) indexes, 
8*(sum(si.data_pages)+sum(si.index_pages)) q, 
case when grouping (so.name) = 0 then max (si.rows) else 0 end rows, 
count (is_index) index_count, 
case when grouping (so.name) = 0 then min (isnull(date_recount,getdate())) else null end date_recount_stat,
case when grouping (so.name) = 0 then max (reclen) else 0 end record_len
from
(select 
        case 
                when si.indid between 2 and 251 then isnull(si.used,0)
                else 0
        end index_pages,
        case 
                when si.indid<2 then si.dpages 
                when si.indid = 255 then isnull(si.used,0)
                else 0
        end data_pages,
        case    when si.indid < 2 then si.rows 
                when si.indid between 2 and 251 then 0
                else 0
        end rows,
        case    
                when si.indid between 1 and 251 then 1
                else 0
        end is_index,
        si.id, si.indid, si.name, 
        STATS_DATE(si.id, si.indid) date_recount
from sysindexes si (nolock) 

where si.name not like '_wa_sys%' and si.name not like 'Statistic_%'
) si inner join sysobjects as so (nolock) on so.id=si.id and so.name not like 'sys%'
inner join (select sum(length) reclen, id from syscolumns (nolock) group by id) sc on sc.id = so.id
group by so.name with rollup
order by grouping (so.name), q desc, so.name

1. Скрипт запускать из контекста анализируемой БД
2. Размеры приведены к килобайтам.
3. rows может быть неточно (см. документацию)
4. Колонки:
name — имя таблицы
data — килобайт данных
indexes — килобайт индексов
q — сумма данных и индексов
rows — записей
index_count — индексов
date_recount_stat — статистика
record_len — длина записи
5. На 2005 не проверял.

Как определить размер моей базы данных SQL Server?

Это запрос / представление, которое получает всю эту информацию и даже больше, без каких-либо «злых» курсоров или циклов. 😉

    /*
    vwTableInfo - Table Information View

 This view display space and storage information for every table in a
SQL Server 2005 database.
Columns are:
    Schema
    Name
    Owner       may be different from Schema)
    Columns     count of the max number of columns ever used)
    HasClusIdx  1 if table has a clustered index, 0 otherwise
    RowCount
    IndexKB     space used by the table's indexes
    DataKB      space used by the table's data

 16-March-2008, [email protected]
 31-January-2009, Edited for better formatting
*/
--CREATE VIEW vwTableInfo
-- AS

    SELECT SCHEMA_NAME(tbl.schema_id) as [Schema]
    , tbl.Name
    , Coalesce((Select pr.name 
            From sys.database_principals pr 
            Where pr.principal_id = tbl.principal_id)
        , SCHEMA_NAME(tbl.schema_id)) as [Owner]
    , tbl.max_column_id_used as [Columns]
    , CAST(CASE idx.index_id WHEN 1 THEN 1 ELSE 0 END AS bit) AS [HasClusIdx]
    , Coalesce( (Select sum (spart.rows) from sys.partitions spart 
        Where spart.object_id = tbl.object_id and spart.index_id < 2), 0) AS [RowCount]

    , Coalesce( (Select Cast(v.low/1024.0 as float) 
        * SUM(a.used_pages - CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END) 
            FROM sys.indexes as i
             JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id
             JOIN sys.allocation_units as a ON a.container_id = p.partition_id
            Where i.object_id = tbl.object_id  )
        , 0.0) AS [IndexKB]

    , Coalesce( (Select Cast(v.low/1024.0 as float)
        * SUM(CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END) 
            FROM sys.indexes as i
             JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id
             JOIN sys.allocation_units as a ON a.container_id = p.partition_id
            Where i.object_id = tbl.object_id)
        , 0.0) AS [DataKB]
    , tbl.create_date, tbl.modify_date

     FROM sys.tables AS tbl
      INNER JOIN sys.indexes AS idx ON (idx.object_id = tbl.object_id and idx.index_id < 2)
      INNER JOIN master.dbo.spt_values v ON (v.number=1 and v.type='E')

Наслаждаться.

Как узнать размер базы данных в Microsoft SQL Server? | Info-Comp.ru

Иногда у разработчиков или администраторов Microsoft SQL Server возникает необходимость узнать размер базы данных, поэтому сегодня, специально для начинающих, я покажу несколько возможностей получения данной информации.

Надеюсь, Вы понимаете, что все действия, которые мы будем рассматривать в данном материале, требуют определенных знаний в части Microsoft SQL Server и языка T-SQL, поэтому если Вы новичок, то я Вам рекомендую предварительно или после прочтения данной статьи и в случае возникновения тех ли иных вопросов, ознакомиться со следующими материалами:

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

Примечание! В качестве СУБД в примерах ниже будет использована версия Microsoft SQL Server 2016 Express. На данном экземпляре SQL сервер создана база данных TestBase, размер которой мы и будем узнавать.

Узнаем размер базы данных с помощью SQL Server Management Studio

Данный способ подразумевает использование графического инструмента SQL Server Management Studio и заключается он в открытие свойств конкретной базы данных, где как раз и есть информация о ее размере.

Для того чтобы узнать размер базы данных с помощью Management Studio, открываем ее и в «Обозревателе объектов» выбираем нужную базу данных, кликаем по ней правой кнопкой мыши и выбираем «Свойства».

В итоге у Вас откроется окно «Свойства базы данных», в котором будет отображено много информации. На вкладке «Общие» в разделе «База данных» есть свойство «Размер» — это как раз размер базы данных.


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

Узнаем размер базы данных с использованием системной процедуры sp_helpdb

Следующий способ, можно сказать классический, подразумевает использованием системной хранимой процедуры sp_helpdb, которая может показать информацию как по одной базе данных, для этого в качестве параметра передаем имя базы данных, так и по всем, т.е. запускаем без параметров. В случае если мы указали конкретную базу данных, то SQL сервер нам вернет дополнительный результирующий набор, в котором мы увидим информацию обо всех файлах, относящихся к данной БД, включая их размер.

   
   EXEC sp_helpdb TestBase;


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

Определяем размер базы данных с помощью системного представления sys.database_files

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

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

   
   --Узнаем общий размер БД
   SELECT SUM(CAST(size / 128.0 AS DECIMAL(17,2))) AS [Размер в MB]
   FROM sys.database_files

   --Узнаем размер каждого файла в БД
   SELECT name AS [Логическое имя файла], 
           physical_name AS [Путь и имя файла в ОС],
           state_desc AS [Состояние файла],
           CAST(size / 128.0 AS DECIMAL(17,2)) AS [Размер в MB]
   FROM sys.database_files


Размер базы данных в SQL сервере отображается в страницах по 8 КБ, поэтому для того чтобы посчитать размер БД в мегабайтах мы должны число, которое нам возвращает SQL сервер, не только поделить на 1024, но и умножить на 8, в примере выше использована сокращенная запись данной операции (1024/8=128), которая обычно используется в официальной документации.

В случае необходимости получить информацию о размере всех баз данных находящейся на текущем экземпляре SQL сервер, можно использовать представление sys.master_files, которое возвращает сведения обо всех файлах баз данных, расположенных на SQL Server.

Как Вы заметили, все три способа вернули нам одинаковый результат, так и должно быть, какой из способов Вам будет удобней использовать в той или иной ситуации, решать, конечно же, Вам, а у меня на этом все, удачи!

Нравится9Не нравится1

Вычисление размера базы данных

ERwin
позволяет рассчитать приблизительный
размер базы данных в целом, а также
таблиц, индексов и других объектов через
определенный период времени после
начала эксплуатации БД. Для расчета
размера объектов БД предназначена
команда главного меню Tools | Volumetrics, которая
активизирует окно Volumetrics (рис.19),
содержащее
три закладки Settings, Report и Parameters.

Закладка
Settings
служит для задания основных параметров,
на основе которых вычисляется размер
базы данных. Для таблицы, выбранной в
левом списке Table,
в группе Table
Row
Counts
задается начальное количество строк
(Initial), максимальное количество строк
(Max) и прирост строк в месяц (Grow By). Если
параметры Max и Grow By используются
одновременно, то рост размера таблицы
прекращается при достижении максимального
размера. После задания параметров
Initial, Max и Grow By в группе Sizing
Estimates,
расположенной в левом нижнем углу окна
Volumetrics,
отображается средний размер строки,
начальный размер таблицы и индексов.

Табличная
форма Column
Properties
позволяет задать свойства столбцов
(полей) таблицы, выбранной в левом списке
Table.
Имена столбцов, их тип и размер не
редактируются. Можно изменять среднюю
ширину поля ( для тех типов, для которых
это допускается) и параметр Pct
NULL
(ожидаемый средний процент строк таблицы,
в которых поле принимает значение NULL).
ERwin
в зависимости от выбранной СУБД
автоматически определяет, какие ячейки
табличной формы Column
Properties
доступны для ввода.

Группа
Include
Indexes
позволяет учесть или игнорировать при
вычислении размера БД индексы, создаваемые
для внешних (FK),
первичных (PK)
и альтернативных (AK)
ключей.

Группа
Storage
позволяет задать объект физической
памяти, в котором будет храниться
выбранная таблица. Если объект не описан,
то его м

Рис.19.
Окно Volumetrics с закладкой Settings

ожно определить,
воспользовавшись кнопкой […]

З

Рис.20.
Окно Volumetrics с закладкой Report

акладкаReport
(рис.20) содержит результаты вычисления
размера БД. Группа Options
позволяет выбрать тип объектов, по
которым проводятся вычисления, а группа
Time
– момент для оценки размера БД (Initial
— начальное состояние; Projections
– определенное время после начала
эксплуатации БД). Полученные результаты
можно отправить в генератор
отчетов Data Browser, нажав кнопку Send to Data
Browser.

Закладка
Parameters
(рис.21) служит для задания дополнительных
параметров, используемых для оценки
размера:

  • TableFactor
    показывает накладные расходы на хранение
    таблицы в БД. Например, значение 2
    увеличит размер таблицы вдвое;

  • IndexFactor
    показывает накладные расходы на хранение
    индекса в БД. Например, значение 1.5
    увеличит размер индекса с 1 до 1,5 Мбайт;

  • RowOverhead
    используется для дополнительного
    пересчета количества байт в каждой
    строке. Например, значение 10 увеличит
    размер каждой строки таблицы на 10 байт;

  • BlobFactor
    и BlobBlockFactor
    используются для пересчета размера
    столбцов Blob-типа,
    хранящихся физически вне базы данных;

  • BytesPerChar
    используется для задания количества
    байт, необходимых для хранения одного
    символа строкового типа. Например, для
    кода ASCII
    – это 1 байт, для Unicode
    – 2 байта;

  • L

    Рис.21.
    Окно
    Volumetrics с
    закладкой Parameters

    ogPercent
    используется для вычисления размеров
    log-файлов
    базы данных. Например, значение 100
    увеличивает размер вдвое.

Solved: Vcenter 5.1 — Размер БД 1 ТБ

1 ТБ базы — это гигантский размер для БД vcenter.

Основные моменты, которые влияют на рост базы:

1. Количество Task и Events, которые генерятся, и сроки их хранения в базе.

2. Уровни сбора статистики перформанса. Рекомендуемые уровни статистики — 1 и 2. Уровни 3 и 4 нужно запускать только.

Обработка статистики происходит с помощью запуска stored procedures в MS SQL. То, что табличек hist_stats много — это так и должно быть. Начиная с 5.1 просто изменили подход к размещению статистики.

Что нужно сделать:

1. С помощью SQL отчета посмотреть Top Tables, где больше всего записей.

2. Если это Task и Events, проверить значение глубины хранения Configure Database Retention Policy (кстати в какой-то из версий там вообще было из коробки настроено, что хранить записи всегда). Установить какое-то значение небольшое (например неделя) и дождаться автоматической очистки таблиц.

3. Если это статистика перформанса:

— снизить уровни сбора статистики

— проверить что все джобы и stored procedures на месте Verifying jobs and stored procedures installed in vCenter Server 5.1, 5.5 and 6.x (2033096) | VMware…

— проверить по логам SQL Agent, что они все хотя бы запускаются. Если не запускаются, их можно тупо пересоздать. Checking the status of vCenter Server performance rollup jobs (2012226) | VMware KB

4. Конечный и единственно поддерживаемый официально вариант удаления данных из БД Selective deletion of tasks, events, and historical performance data in vSphere 5.x and 6.x (2110031… Но при таких размерах он занимает время и на это время надо останавливать vcenter.

P.S. Кстати в каком режиме у вас работает БД: с логами или Simple? может такое статься, что из 1 ТБ, реально в базе места используется совсем чуть-чуть и ей можно просто шринк сделать.

Прицепите сюда свойства БД, где пишется размер и режим работы. И еще заодно список 10 основных таблиц, которые в БД место занимают.

Попробуем разобраться.

View solution in original post

Сервер

sql — получить размер всех таблиц в базе данных

Расширение для ответа @xav, которое обрабатывает разделы таблицы, чтобы получить размер в МБ и ГБ.
Протестировано на SQL Server 2008/2012 (прокомментирована строка, в которой is_memory_optimized = 1 )

  ВЫБРАТЬ
    a2.name AS TableName,
    a1.rows как [RowCount],
    - (a1.reserved + ISNULL (a4.reserved, 0)) * 8 AS ReservedSize_KB,
    --a1.data * 8 AS DataSize_KB,
    - (CASE WHEN (a1.used + ISNULL (a4.used, 0))> a1.data THEN (a1.used + ISNULL (a4.used, 0)) - a1.data ELSE 0 END) * 8 AS IndexSize_KB,
    - (CASE WHEN (a1.reserved + ISNULL (a4.reserved, 0))> a1.used THEN (a1.reserved + ISNULL (a4.reserved, 0)) - a1.used ELSE 0 END) * 8 AS UnusedSize_KB ,
    CAST (ROUND (((a1.reserved + ISNULL (a4.reserved, 0)) * 8) / 1024.00, 2) AS NUMERIC (36, 2)) AS ReservedSize_MB,
    CAST (ROUND (a1.data * 8 / 1024,00; 2) AS NUMERIC (36; 2)) AS DataSize_MB,
    CAST (ROUND ((CASE WHEN (a1.used + ISNULL (a4.used, 0))> a1.data THEN (a1.used + ISNULL (a4.used, 0)) - a1.данные ELSE 0 END) * 8 / 1024.00, 2) КАК ЧИСЛО (36, 2)) КАК IndexSize_MB,
    CAST (ROUND ((CASE WHEN (a1.reserved + ISNULL (a4.reserved, 0))> a1.used THEN (a1.reserved + ISNULL (a4.reserved, 0)) - a1.used ELSE 0 END) * 8 / 1024.00, 2) КАК ЧИСЛО (36, 2)) КАК UnusedSize_MB,
    - '| | ' Separator_MB_GB,
    CAST (ROUND (((a1.reserved + ISNULL (a4.reserved, 0)) * 8) / 1024.00 / 1024.00, 2) AS NUMERIC (36, 2)) AS ReservedSize_GB,
    CAST (ROUND (a1.data * 8 / 1024,00 / 1024,00; 2) AS NUMERIC (36; 2)) AS DataSize_GB,
    CAST (КРУГЛЫЙ ((СЛУЧАЙ, КОГДА (a1.used + ISNULL (a4.used, 0))> a1.data THEN (a1.used + ISNULL (a4.used, 0)) - a1.data ELSE 0 END) * 8 / 1024.00 / 1024.00, 2) КАК ЧИСЛ ( 36, 2)) AS IndexSize_GB,
    CAST (ROUND ((CASE WHEN (a1.reserved + ISNULL (a4.reserved, 0))> a1.used THEN (a1.reserved + ISNULL (a4.reserved, 0)) - a1.used ELSE 0 END) * 8 / 1024.00 / 1024.00, 2) КАК ЧИСЛО (36, 2)) КАК UnusedSize_GB
ИЗ
    (ВЫБРАТЬ
        ps.object_id,
        SUM (CASE WHEN (ps.index_id <2) THEN row_count ELSE 0 END) AS [rows],
        СУММ (пс.reserved_page_count) КАК зарезервировано,
        СУММА (СЛУЧАЙ
                КОГДА (ps.index_id <2) ТО (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
                ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)
            КОНЕЦ
            ) Данные AS,
        СУММ (ps.used_page_count) КАК используется
    ИЗ sys.dm_db_partition_stats ps
        - === Удалите следующий комментарий для SQL Server 2014+.
        --ГДЕ ps.object_id НЕ ВХОДИТ (ВЫБРАТЬ идентификатор_объекта ИЗ sys.таблицы WHERE is_memory_optimized = 1)
    ГРУППА ПО ps.object_id) как a1
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
    (ВЫБРАТЬ
        it.parent_id,
        SUM (ps.reserved_page_count) КАК зарезервировано,
        СУММ (ps.used_page_count) КАК используется
     ИЗ sys.dm_db_partition_stats ps
     INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
     ГДЕ it.internal_type IN (202,204)
     ГРУППА ПО it.parent_id) КАК a4 ON (a4.parent_id = a1.object_id)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ sys.all_objects a2 ON (a1.object_id = a2.object_id)
INNER JOIN sys.схемы a3 ON (a2.schema_id = a3.schema_id)
ГДЕ a2.type <> N'S 'и a2.type <> N'IT'
--AND a2.name = 'MyTable' --Фильтр для конкретной таблицы
--ЗАКАЗАТЬ ПО a3.name, a2.name
ЗАКАЗАТЬ ПО Зарезервированному размеру_MB DESC
  

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

Как я могу получить фактический размер данных для каждой строки в таблице SQL Server? — Обмен стеками администраторов баз данных

Сеть обмена стеков

Сеть Stack Exchange состоит из 176 сообществ вопросов и ответов, включая Stack Overflow, крупнейшее и пользующееся наибольшим доверием онлайн-сообщество, где разработчики могут учиться, делиться своими знаниями и строить свою карьеру.

Посетить Stack Exchange

  1. 0

  2. +0

  3. Авторизоваться
    Зарегистрироваться

Database Administrators Stack Exchange — это сайт вопросов и ответов для специалистов по базам данных, которые хотят улучшить свои навыки работы с базами данных и учиться у других в сообществе.Регистрация займет всего минуту.

Зарегистрируйтесь, чтобы присоединиться к этому сообществу

Кто угодно может задать вопрос

Кто угодно может ответить

Лучшие ответы голосуются и поднимаются наверх

Спросил

Просмотрено
120к раз

Я нашел этот скрипт
sql-server-2005-достижение-ограничение размера строки-таблицы
который, кажется, возвращает размер строки для определенной длины типа данных.Мне нужен сценарий, который предоставит мне все строки в таблице, максимальный размер данных которых превышает рекомендуемый 8024 (независимо от того, что рекомендует MS)

Создан 05 окт.

Энтони

53311 золотых знаков44 серебряных знака55 бронзовых знаков

3

Попробуйте этот сценарий:

  объявить @table nvarchar (128)
объявить @idcol nvarchar (128)
объявить @sql nvarchar (max)

- инициализировать эти два значения
установить @table = 'YourTable'
установить @idcol = 'некоторый идентификатор для распознавания строки'

установить @sql = 'select' + @idcol + ', (0'

выберите @sql = @sql + '+ isnull (datalength (' + name + '), 1)'
        из сис.столбцы
        где object_id = object_id (@table)
        и is_computed = 0
установить @sql = @sql + ') как размер строки из' + @table + 'в порядке убывания размера строки'

ПЕЧАТЬ @sql

exec (@sql)
  

Строки будут отсортированы по размеру, поэтому вы можете проверять их сверху вниз.

Марко

3,86844 золотых знака1919 серебряных знаков2525 бронзовых знаков

Создан 05 окт.

Хайме

79066 серебряных знаков88 бронзовых знаков

7

Мне понравилось это от Хайме.Я добавил несколько квадратных скобок для обработки странных имен столбцов.

  объявить @table nvarchar (128)
    объявить @idcol nvarchar (128)
    объявить @sql nvarchar (max)
    
    - инициализировать эти два значения
    установить @table = 'YourTable'
    установить @idcol = 'некоторый идентификатор для распознавания строки'
    
    установить @sql = 'select' + @idcol + ', (0'
    
    выберите @sql = @sql + '+ isnull (datalength ([' + name + ']), 1)'
            из sys.columns, где object_id = object_id (@table)
    установить @sql = @sql + ') как размер строки из' + @table + 'в порядке убывания размера строки'
    
    ПЕЧАТЬ @sql
    
    exec (@sql)
  

Создан 03 апр.

Speedcat

10111 серебряный знак33 бронзовых знака

1

Мне понравилось приведенное выше от Speedcat, и я расширил его до списка всех таблиц с количеством строк и общим количеством байтов.

  объявить @table nvarchar (128)
объявить @sql nvarchar (max)
установить @sql = ''
ОБЪЯВИТЬ tableCursor КУРСОР ДЛЯ
ВЫБЕРИТЕ имя из sys.tables

открыть таблицуКурсор
получить следующий из tableCursor в @table

СОЗДАТЬ ТАБЛИЦУ #TempTable (имя таблицы nvarchar (max), Bytes int, RowCnt int)

ПОКА @@ FETCH_STATUS = 0
начинать
    установить @sql = 'вставить в #TempTable (Tablename, Bytes, RowCnt)'
    set @sql = @sql + 'select' '' + @ table + '' '"Table", sum (t.rowsize) "Bytes", count (*) "RowCnt" from (select (0'

    выберите @sql = @sql + '+ isnull (datalength ([' + name + ']), 1)'
        из sys.столбцы, где object_id = object_id (@table)
    установите @sql = @sql + ') как размер строки из' + @table + ') t'
    exec (@sql)
    ПОЛУЧИТЬ СЛЕДУЮЩИЙ ИЗ tableCursor INTO @table
конец

ПЕЧАТЬ @sql

ЗАКРЫТЬ таблицу
DEALLOCATE tableCursor

выберите * из #TempTable
выберите сумму (байты) «Сумма» из #TempTable

DROP TABLE #TempTable
  

Создан 01 дек.

Я знаю, что это старый вопрос, но есть способ получше:

  выбрать
    SomeOtherColumn,
    Байты = длина данных ((выберите x.* from (values ​​(null)) data (bar) для xml auto))
из таблицы x
  

ответ дан 12 мар в 17:38

4

попробуйте это:

 ; С CTE как (выберите *, LEN (ISNULL (col1, '')) + LEN (ISNULL (col2, '')) как row_len из вашей таблицы)
выберите * из CTE, где row_len> 8060
  

Создан 05 окт.

АнандФадке

16211 серебряный знак55 бронзовых знаков

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками sql-server или задайте свой вопрос.

lang-sql

Stack Exchange для администраторов баз данных лучше всего работает с включенным JavaScript

Ваша конфиденциальность

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в ​​отношении файлов cookie.

Принимать все файлы cookie

Настроить параметры

Найти размер таблиц в базе данных — SQL Server

Когда мы работаем с базами данных SQL Server, очень часто мы сталкиваемся с проблемой ненормального роста размера базы данных.В такой ситуации нам нужно получить размер таблиц в базе данных, чтобы идентифицировать таблицы ненормального размера, чтобы выяснить причину роста.

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

1. Определение размера таблиц с помощью стандартного отчета SSMS

Самый простой способ узнать размер всех таблиц в базе данных — использовать стандартный отчет SQL Server Management Studio (SSMS) под названием Использование диска по таблице .Чтобы получить доступ к таблице использования диска:

  1. Войдите в SSMS.
  2. Щелкните базу данных правой кнопкой мыши.
  3. В контекстном меню выберите Отчеты >> Стандартные отчеты >> Использование диска по таблицам.

В этом стандартном отчете будет указано количество записей в таблице, зарезервированное физическое пространство в КБ и его разбивка.

2. Использование SP_SPACEUSED

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

Создайте TABLE #TableSize (TableName VARCHAR (200), Rows VARCHAR (20),
       Зарезервированный VARCHAR (20), Data VARCHAR (20), index_size VARCHAR (20),
       Неиспользованный VARCHAR (20))
exec sp_MSForEachTable 'Вставить в #TableSize Exec sp_spaceused [?]'
Выбирать
TableName, CAST (строки как bigint) как строки,
CONVERT (bigint, left (Зарезервировано, len (зарезервировано) -3)) As Size_In_KB
от #TableSize по 3 убыванию
Удалить таблицу #TableSize
 

3.Использование SYS.TABLES и SYS.Allocation_UNITS

Другой метод — использовать системные таблицы sys.tables, sys.partitions и sys.allocation_units.

ВЫБРАТЬ
    t.NAME КАК TableName,
    SUM (a.total_pages) * 8 AS TotalSpaceKB,
    SUM (a.used_pages) * 8 AS UsedSpaceKB,
    (SUM (a.total_pages) - SUM (a.used_pages)) * 8 AS UnusedSpaceKB
ИЗ
    sys.tables t
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    sys.partitions p ON t.object_id = p.OBJECT_ID
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    sys.allocation_units a ON p.partition_id = a.container_id
ГРУППА ПО
    т.Имя
СОРТИРОВАТЬ ПО
    TotalSpaceKB Описание
 

Связанные

Ссылка

Как получить размер таблицы в MySQL

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

Независимо от названия важна информация, предоставляемая этими таблицами INFORMATION_SCHEMA .Все, от просмотров и user_privilieges до столбцов и таблиц , можно найти в INFORMATION_SCHEMA . Для наших целей нас особенно интересуют метаданные таблиц , которые мы можем запросить, чтобы фактически извлечь размер различных таблиц в системе.

Список размеров таблиц из одной базы данных

Как видно из официальной документации, таблица INFORMATION_SCHEMA.TABLES содержит около 20 столбцов, но с целью определения объема дискового пространства, используемого таблицами, мы сосредоточимся, в частности, на двух столбцах: DATA_LENGTH и INDEX_LENGTH .

  • ДЛИНА_ДАННЫХ — длина (или размер) всех данных в таблице (в байтах ).
  • INDEX_LENGTH — это длина (или размер) индексного файла для таблицы (также в байтах ).

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

  ВЫБРАТЬ
  TABLE_NAME как `Table`,
  ОКРУГЛ ((DATA_LENGTH + INDEX_LENGTH) / 1024/1024) КАК `Размер (МБ)`
ИЗ
  information_schema.TABLES
ГДЕ
  TABLE_SCHEMA = "книжный магазин"
СОРТИРОВАТЬ ПО
  (DATA_LENGTH + INDEX_LENGTH)
DESC;
  

В этом примере с использованием базы данных книжного магазина мы объединяем DATA_LENGTH и INDEX_LENGTH как байта , затем делим его на 1024 дважды , чтобы преобразовать в килобайт, затем и и байтов.Наш набор результатов будет выглядеть примерно так:

  + ---------------------------------- + ----------- +
| Стол | Размер (МБ) |
+ ---------------------------------- + ----------- +
| книга | 267 |
| автор | 39 |
| сообщение | 27 |
| кеш | 24 |
...
  

Если вас не интересуют все таблицы в базе данных, а нужен только размер конкретной таблицы, вы можете просто добавить AND TABLE_NAME = "your_table_name" в предложение WHERE .Здесь нам нужна только информация о book table:

  ВЫБРАТЬ
  TABLE_NAME как `Table`,
  ОКРУГЛ ((DATA_LENGTH + INDEX_LENGTH) / 1024/1024) КАК `Размер (МБ)`
ИЗ
  information_schema.TABLES
ГДЕ
    TABLE_SCHEMA = "книжный магазин"
  И
    TABLE_NAME = "книга"
СОРТИРОВАТЬ ПО
  (DATA_LENGTH + INDEX_LENGTH)
DESC;
  

Результаты, как и ожидалось, сейчас:

  + ------- + ----------- +
| Стол | Размер (МБ) |
+ ------- + ----------- +
| книга | 267 |
+ ------- + ----------- +
1 ряд в комплекте (0.00 сек)
  

Список всех размеров таблиц из ВСЕХ баз данных

Если вы столкнулись с проблемой, когда ваша база данных увеличивается в размере, но вы не знаете, какая таблица является причиной, может быть полезно запросить размер всех таблиц в пределах всех баз данных в целом система. Это легко сделать с помощью следующего запроса:

  ВЫБРАТЬ
  TABLE_SCHEMA AS `База данных`,
  TABLE_NAME как `Table`,
  ОКРУГЛ ((DATA_LENGTH + INDEX_LENGTH) / 1024/1024) КАК `Размер (МБ)`
ИЗ
  information_schema.ТАБЛИЦЫ
СОРТИРОВАТЬ ПО
  (DATA_LENGTH + INDEX_LENGTH)
DESC;
  

Это вернет не только размер таблицы, но также имя таблицы и родительскую базу данных, с которой она связана.

Как определить размер моей базы данных SQL Server?

запустите это, чтобы получить размер таблицы:

  / ********************************************** *******************************
** Файл: «GetTableSpaceUsage.sql»
** Имя: Получить использование табличного пространства для определенной схемы
** Автор: Роберт С.Каин
** Дата: 27.01.2008
**
** Desc: вызывает процедуру sp_spaceused для каждой таблицы в схеме и возвращает
** Имя таблицы, количество строк и пространство, используемое для каждой таблицы.
**
** Вызвано:
** н / д - по мере необходимости
**
** Входные параметры:
** В коде проверьте значение @schemaname, если оно вам нужно для
** схему, отличную от dbo, обязательно измените ее.
**
** Выходные параметры:
** нет данных
************************************************ ***************************** /

/ * ————————————————————————— * /
/ * Отбрасываем временную таблицу, если она есть при предыдущем запуске * /
/ * ————————————————————————— * /
если object_id (N'tempdb.. [# TableSizes] ') не равно нулю
  drop table #TableSizes;
идти

/ * ————————————————————————— * /
/ * Создаем временную таблицу * /
/ * ————————————————————————— * /
создать таблицу #TableSizes
  (
    [Имя таблицы] nvarchar (128) / * Имя таблицы * /
  , [Количество строк] char (11) / * Количество строк, существующих в таблице. * /
  , [Зарезервированное пространство] varchar (18) / * Зарезервированное пространство для таблицы. * /
  , [Data Space] varchar (18) / * Объем пространства, используемого данными в таблице.* /
  , [Размер индекса] varchar (18) / * Объем пространства, используемого индексами в таблице. * /
  , [Неиспользуемое пространство] varchar (18) / * Объем зарезервированного, но не используемого пространства. * /
  );
идти

/ * ————————————————————————— * /
/ * Загружаем временную таблицу * /
/ * ————————————————————————— * /
объявить @schemaname varchar (256);
- Убедитесь, что в следующей строке указано имя схемы, которое вы хотите!
установить @schemaname = 'dbo';

- Создайте курсор для циклического перебора имен каждой таблицы в схеме.
объявить курсор curSchemaTable
  для выбора sys.schemas.name + '.' + sys.objects.name
      из sys.objects
            , sys.schemas
      где object_id> 100
              и sys.schemas.name = @schemaname
              / * Для конкретной таблицы раскомментируйте следующую строку и укажите имя * /
              --and sys.objects.name = 'имя-конкретной-таблицы-здесь'
              и type_desc = 'USER_TABLE'
              и sys.objects.schema_id = sys.schemas.schema_id;

open curSchemaTable;
объявить @name varchar (256); / * Это имя текущей таблицы * /

- Теперь цикл через курсор, вызывая sp_spaceused для каждой таблицы
получить curSchemaTable в @name;
в то время как (@@ FETCH_STATUS = 0)
  начинать
    вставить в #TableSizes
            exec sp_spaceused @objname = @name;
    получить curSchemaTable в @name;
  конец

/ * Важно как закрыть, так и освободить место! * /
закрыть curSchemaTable;
deallocate curSchemaTable;


/ * ————————————————————————— * /
/ * Отправка результатов обратно * /
/ * ————————————————————————— * /
выберите [Название таблицы]
      , [Количество строк]
      , [Зарезервированное пространство]
      , [Пространство данных]
      , [Размер индекса]
      , [Неиспользованное пространство]
из [#TableSizes]
упорядочить по [Название таблицы];

/ * ————————————————————————— * /
/ * Удаляем временную таблицу * /
/ * ————————————————————————— * /
drop table #TableSizes;
  

взято из блога Роберта Кейна

Этот код предназначен для Microsoft SQL 2005+

Как узнать размер каждой таблицы в базе данных SQL

SET NOCOUNT ON
/ * 0 = В алфавитном порядке ПО имени ТАБЛИЦЫ
1 = Сортировано по общему пространству, используемому ТАБЛИЦЕЙ
* /
DECLARE @strSQL varchar (100)
DECLARE @bitSort Bit
DECLARE @vchSortString varchar (50)

- Измените это значение ДЛЯ параметров сортировки 0 = По алфавиту и 1 = Размер таблицы по убыванию SELECT @
= 1

- Создать временную таблицу
СОЗДАТЬ ТАБЛИЦУ #TempTable (
vchTableName varchar (100),
biRowCount bigInt,

vchTableData varchar ),
vchIndexSpaceUsed varchar (50),
vchUnusedSpace varchar (50))

- Создание оператора SQL для запуска строки хранимой процедуры
SELECT @strSQL = 'sp_msforeachtable' 'sp_spaceused "?"' ''

- Заполнить временную таблицу
INSERT INTO #TempTable EXEC (@strSQL)

- Запускать разные запросы в зависимости от сортировки. selected

IF @bitSort = 0 - Сортировать по vchTableName по возрастанию
SELECT vchTableName, biRowCount,
CASE WHEN CAST (LEFT (vchTableSize, CHARINDEX ('' THEN CAST (CAST (LEFT (vchTableSize, CHARINDEX ('', vchTableSize)) AS bigInt) / 1000 AS varchar (5)) + 'MB'
WHEN CAST (LEFT (vchTableSize, CHARINDEX ('', vchTableSize)) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchTableSize, CHARINDEX ('', vchTableSize)) AS bigInt) / 1000000 AS varchar (5)) + 'GB'
ELSE vchTableSize END AS vchTableSize 9029 WHEN CAST (LEFT (vchDatASpaceUsed, CHARINDEX ('', vchDatASpaceUsed)) AS bigInt) МЕЖДУ 1000 И 999999 THEN CAST (CAST (LEFT (vchDatASpaceUsed, CHARINDEX ('', vchDatASpaceUsed)) AS bigInt) / 1000 AS varchar (5)) + 'MB'

WHEN CAST (LEFT (vchDatASpaceUsed, CHARINDEX) ('', vchDatASpaceUsed) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchDatASpaceUsed, CHARINDEX ('', vchDatASpaceUsed)) AS bigInt) / 1000000 AS varchar (5)) + 'GB'
ELSE vchDatASpaceUsed END AS vchDatAS4 9029 WHEN CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('', vchIndexSpaceUsed)) AS bigInt) МЕЖДУ 1000 И 999999 THEN CAST (CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('', vchIndexSpaceUsed) / bigInt) (bigInt) + 'MB'
WHEN CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('', vchIndexSpaceUsed)) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('' varchar (5)) + 'GB'
ELSE vchIndexSpaceUsed END AS vchIndexSpaceUsed,
CASE WHEN CAST (LEFT (vchUnusedSpace, CHARINDEX ('', vchUnused Space)) AS bigInt) МЕЖДУ 1000 И 999999 THEN CAST (CAST (LEFT (vchUnusedSpace, CHARINDEX ('', vchUnusedSpace)) AS bigInt) / 1000 AS varchar (5)) + 'MB'
WHEN CAST (LEFT ( vchUnusedSpace, CHARINDEX ('', vchUnusedSpace)) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchUnusedSpace, CHARINDEX ('', vchUnusedSpace)) AS bigInt) / 1000000 AS varchar (5)) + '
ГБ'
ELSE vchUnusedSpace END AS vchUnusedSpace
FROM #TempTable
ORDER BY vchTableName

ELSE - Сортировка по общему размеру таблицы по убыванию
SELECT vchTableCEFize (WHR4TableName , ('', vchTableSize)) AS bigInt) МЕЖДУ 1000 И 999999 THEN CAST (CAST (LEFT (vchTableSize, CHARINDEX ('', vchTableSize)) AS bigInt) / 1000 AS varchar (5)) + 'MB'
WHEN CAST (LEFT (vchTableSize, CHARINDEX ('', vchTableSize)) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchTableSize, CHARINDEX ('', vchTableSize)) A S bigInt) / 1000000 AS varchar (5)) + 'GB'
ELSE vchTableSize END AS vchTableSize,
CASE WHEN CAST (LEFT (vchDatASpaceUsed, CHARINDEX ('', vchDatASpaceUsed) и 999 BETSBIGIEN)) 999 THEN CAST (CAST (LEFT (vchDatASpaceUsed, CHARINDEX ('', vchDatASpaceUsed)) AS bigInt) / 1000 AS varchar (5)) + 'MB'
WHEN CAST (LEFT (vchDatASpaceUsed, CHARINDEX) ('', vchDatASpaceUsed) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchDatASpaceUsed, CHARINDEX ('', vchDatASpaceUsed)) AS bigInt) / 1000000 AS varchar (5)) + 'GB'
ELSE vchDatASpaceUsed END AS vchDatAS4 9029 WHEN CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('', vchIndexSpaceUsed)) AS bigInt) МЕЖДУ 1000 И 999999 THEN CAST (CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('', vchIndexSpaceUsed) / bigInt) (bigInt) + 'MB'
WHEN CAST (LEFT (vchIndexSpaceUsed, CHARINDEX ('', vchIndexSpaceUsed)) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchIndexSpaceUsed , CHARINDEX ('', vchIndexSpaceUsed)) AS bigInt) / 1000000 AS varchar (5)) + 'GB'
ELSE vchIndexSpaceUsed END AS vchIndexSpaceUsed,
CASE WHEN CAST (VchUn )) AS bigInt) МЕЖДУ 1000 И 999999 THEN CAST (CAST (LEFT (vchUnusedSpace, CHARINDEX ('', vchUnusedSpace)) AS bigInt) / 1000 AS varchar (5)) + 'MB'
WHEN CAST (LEFusedSpace (vchUn , CHARINDEX ('', vchUnusedSpace)) AS bigInt)> 999999 THEN CAST (CAST (LEFT (vchUnusedSpace, CHARINDEX ('', vchUnusedSpace)) AS bigInt) / 1000000 AS varchar (5)) + 'GB'
ELSE vchUnusedSpace END AS vchUnusedSpace
FROM #TempTable
ORDER BY cast (left (vchTableSize, charindex ('', vchTableSize)) AS bigInt) DESC

TABLE DROPTable DROPTable - Удалить таблицу TempTable

Как найти большие таблицы в базе данных SQL

Как найти большие таблицы в базе данных MS SQL
Если ваша база данных кажется больше, чем вы ожидаете, в этой статье будет показано, как отобразить список таблиц базы данных MS SQL в порядке размера и указать связанные размер стола.

Для выполнения этих действий необходимо, чтобы на вашем компьютере была установлена ​​среда Microsoft SQL Server Management Studio.

  1. Откройте и войдите в Microsoft SQL Server Management Studio
  2. Щелкните правой кнопкой мыши базу данных
  3. Наведите указатель мыши на Отчеты
  4. Наведите указатель мыши на Стандартные отчеты
  5. Выберите Использование диска по верхним таблицам
  1. Откройте и войдите в Microsoft SQL Server Management Studio
  2. Нажмите кнопку Новый запрос
  3. Скопируйте следующий сценарий на страницу «Новый запрос», заменив [DatabaseName] именем своей базы данных.

    ИСПОЛЬЗОВАНИЕ [DatabaseName]

    ГО

    СОЗДАТЬ ТАБЛИЦА # темп. (

    имя_таблицы sysname,

    row_count INT ,

    зарезервированный_размер VARCHAR (50),

    размер_данных VARCHAR (50),

    index_size VARCHAR (50),

    unused_size VARCHAR (50))

    НАБОР БЕЗ СЧЕТА ВКЛ

    ВСТАВИТЬ # темп

    EXEC sp_msforeachtable 'sp_spaceused' '?' "

    ВЫБРАТЬ а.table_name,

    a.row_count,

    COUNT (*) AS col_count,

    a.data_size

    ИЗ # темп.

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

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