본문 바로가기

Windows Server

MS SQL DB 내에서 테이블 크기 비교하기

반응형

확인하고자 하는 Database 내에서 query창을 실행한 후, 아래의 명령어를 활용하면 된다.

불필요한 로그가 있다면, 주기적으로 삭제해 주면 된다.

 

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 
    TotalSpaceKB DESC, t.Name

 

 

만약, 크기가 무한정으로 커지고 있는 테이블을 발견했다면 아래 구문을 추가해주자. 

 

DELETE FROM 로그테이블명
WHERE logdate < DATEADD(WEEK, -2, GETDATE())

 

반응형