DB가 빠르게 유지되는 방법론 중 가장 확실한 것은
인덱스도 실행계획도 중요하지만, 쓸데없는 데이터를 지우는 것... (나만의 생각??)
여튼.. 정리를 하기 위해 2가지 방법으로
테이블의 사용량을 비교해 본 후, 오래된 데이터를 지우거나 백업DB에 옮기는
방법을 사용해 본다.
단 로그인한 계정이 시스템 테이블 접근 권한이 있어야 함
1. DB에 속한 전체 테이블의 RowCount(행) 수를 알아보기
SELECT c.name + '.' + a.name AS TableName
,SUM(b.rows) AS [RowCount]
FROM sys.tables AS a
INNER JOIN sys.partitions AS b
ON b.OBJECT_ID = a.OBJECT_ID
INNER JOIN sys.schemas AS c
ON a.schema_id = c.schema_id
WHERE a.is_ms_shipped = 0
AND b.index_id IN (1,0)
GROUP BY c.[name],a.[name]
ORDER BY SUM(b.[rows]) DESC
결과
2. DB에 속한 전체 테이블의 용량을 (KB)로 알아보기
SELECT CONVERT(VARCHAR(30), MIN(b.name)) AS TableName
, LTRIM(STR(SUM(reserved) * 8192.0 / 1024.0, 15, 0) + ' KB') AS TableSize
FROM sys.sysindexes AS a
INNER JOIN sys.sysobjects b ON a.id = b.id
WHERE a.indid IN (0, 1, 255)
AND b.xtype = 'U'
GROUP BY a.id
ORDER BY SUM(reserved) * 8192.0 / 1024.0 DESC
결과
결론
치우고 삽시다??
'DB > SQLServer' 카테고리의 다른 글
프로시저에 TRY/CATCH 와 트랜잭션 (0) | 2024.09.04 |
---|---|
Poor Man's T-SQL Formatter SSMS 쿼리 들여쓰기 정리 (1) | 2024.08.29 |
비트 연산 (0) | 2021.05.28 |
DB내 프로시저/함수/뷰 내 속해있는 문자열 검새 (0) | 2020.06.05 |
날짜 또는 시간 문자열 포맷 형식 (0) | 2020.06.01 |