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())