SQL Server/SQL Server 자주보는

[MSSQL] 모든 테이블 사이즈 및 건수 조회하는 방법

꽁담 2020. 11. 1. 21:12

SQL Server 테이블 조회에 필요한 뷰


sys.dm_db_partitions_stats

현재 데이터베이스의 파티션에 구성된 페이지와 로우 수 정보를 반환합니다.

 

sys.internal_tables

내부 테이블 전용입니다.

 

sys.all_objects

스키마에 구성된 모든 객체를 보여줍니다.

 

 

SQL Server 모든 테이블 크기를 조회하는 쿼리


+ 테이블의 건수와, 테이블에 구성된 인덱스들의 합도 같이 확인할 수 있습니다.

쿼리로 확인하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
SELECT
    OBJECT_SCHEMA_NAME(a2.object_id) AS SchemaName,
    a2.name AS TableName,
    a1.rows as [RowCount],
    CAST(ROUND(((a1.reserved + ISNULL(a4.reserved,0)) * 8/ 1024.002) AS NUMERIC(362)) AS ReservedSize_MB,
    CAST(ROUND(a1.data * 8 / 1024.002) AS NUMERIC(362)) AS DataSize_MB,
    CAST(ROUND((CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN (a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8 / 1024.002) AS NUMERIC(362)) AS 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.002) AS NUMERIC(362)) AS UnusedSize_MB
FROM
    (SELECT 
        ps.object_id,
        SUM (CASE WHEN (ps.index_id < 2) THEN row_count ELSE 0 END) AS [rows],
        SUM (ps.reserved_page_count) AS reserved,
        SUM (CASE
                WHEN (ps.index_id < 2) THEN (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)
            END
            ) AS data,
        SUM (ps.used_page_count) AS used
    FROM sys.dm_db_partition_stats ps
    GROUP BY ps.object_id) AS a1
LEFT OUTER JOIN 
    (SELECT 
        it.parent_id,
        SUM(ps.reserved_page_count) AS reserved,
        SUM(ps.used_page_count) AS used
     FROM sys.dm_db_partition_stats ps
     INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
     WHERE it.internal_type IN (202,204)
     GROUP BY it.parent_id) AS a4 ON (a4.parent_id = a1.object_id)
INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id ) 
WHERE a2.type <> N'S' and a2.type <> N'IT'
ORDER BY ReservedSize_MB DESC
cs

 

sp_spaceused 로 크기 비교해보기

위의 테이블 합을 SQL Server 에서 지원하는 sp_spaceused 로 확인하면 동일한 것을 확인할 수 있습니다.

1
2
3
4
5
6
7
8
sp_spaceused 'Person.person'
go
sp_spaceused 'Sales.SalesOrderDetail'
go
sp_spaceused 'Production.TransactionHistory'
go
sp_spaceused 'Production.TransactionHistoryArchive'
go
cs

 

 

 

 

 

 

 

 

SQL Server 모든 테이블 용량 조회하는 쿼리

SQL Server 모든 테이블 크기 조회하는 쿼리

SQL Server 모든 테이블 사이즈 조회하는 쿼리

SQL Server 전체 테이블 용량 조회하는 쿼리

SQL Server 전체 테이블 크기 조회하는 쿼리

SQL Server 전체 테이블 사이즈 조회하는 쿼리

SQL Server 모든 테이블 건수 조회하는 쿼리

SQL Server 전체 테이블 건수 조회하는 쿼리