본문 바로가기
DataBase/MS-SQL

[MS-SQL] 물리적인 테이블 크기 확인하기

by 너울림 2022. 12. 18.

물리적인 테이블 크기 확인

 

물리적인 테이블 크기 확인하기

 


포스팅 개요


가끔 테이블마다 얼마만큼의 데이터가 쌓여있는지 그 크기(용량)를 확인할 필요할 필요가 있습니다. 각 테이블마다 정확한 MB, GB 등의 수치로 표현하여 확인할 수 있다면 지나치게 낭비되는 테이블을 검색하실 때 도움이 됩니다.


예제 쿼리


아래 쿼리문에서 DB_NAME단어를 데이터베이스 이름으로 변경합니다. 대괄호 부분은 지우지 않아도 이름만 맞추면 문제가 없습니다.

USE [DB_NAME]

SET NOCOUNT ON
CREATE TABLE #TBLSize
(
	Tblname        VARCHAR(80),
	TblRows        INT,
	TblReserved    VARCHAR(80),
	TblData        VARCHAR(80),
	TblIndex_Size  VARCHAR(80),
	TblUnused      VARCHAR(80)
)
 
DECLARE @tablename VARCHAR(80)

DECLARE TblName_cursor CURSOR  
FOR
    SELECT NAME
    FROM   sysobjects
    WHERE  xType = 'U'

OPEN TblName_cursor
FETCH NEXT FROM TblName_cursor 
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
    INSERT INTO #tblSize
      (
        Tblname,
        TblRows,
        TblReserved,
        TblData,
        TblIndex_Size,
        TblUnused
      )
    EXEC Sp_SpaceUsed @tablename
    
    FETCH NEXT FROM TblName_cursor 
    INTO @tablename
END
CLOSE TblName_cursor 
DEALLOCATE TblName_cursor
SELECT CAST(Tblname AS VARCHAR(30)) 'Table',
       CAST(TblRows AS VARCHAR(14)) 'Row Count',
       CAST(LEFT(TblReserved, CHARINDEX(' KB', TblReserved)) AS INT) 'Total Space (KB)',
       CAST(TblData AS VARCHAR(14)) 'Data Space',
       CAST(TblIndex_Size AS VARCHAR(14)) 'Index Space',
       CAST(TblUnused AS VARCHAR(14)) 'Unused Space'
FROM   #tblSize
ORDER BY 'Total Space (KB)' DESC

DROP TABLE #TblSize
SET NOCOUNT OFF

실행 결과


예시 USE [master] 검색 결과

총 용량 기준으로 정렬되는 결과값

댓글