728x90
운영 하는 사이트가 활성화 됨에 따라
Data 양이 증가 되고 Table 을 주기적으로 관리를 하지 않으면 속도지연의 이슈로 발생이 될 수 있다.
나의 경우 Log, History 등 과 같은 추적목적인 경우 최소 6개월 의 Data 만 보관 할 수 있도록 하고 있다.
간혹 Table 관리가 되지 않아 Query를 통해 용량 확인 해야 하는 경우가 있어 정리 해 볼까 한다.
-- [1] 디비정보 확인
EXEC SP_HELPDB 조회하고자하는 DB명
-- [1] 테이블 크기
exec sp_spaceused 테이블명;
전체 테이블의 용량을 확인 하고자 할때 아래 Query로 활용 하면 유용하다
-- 테이블 용량 조회
DECLARE @SIZE INT -- 관리대상 테이블 크기(KB)
DECLARE @LOW BIGINT
SELECT @LOW = LOW FROM MASTER.DBO.SPT_VALUES
WHERE NUMBER = 1 AND TYPE = 'E'
SELECT TMP.CRDATE AS DATES
,OBJECT_NAME(TMP.ID) AS NAME
,CONVERT(CHAR(11),SUM(ROWS)) AS ROWS
,LTRIM(STR(SUM(TMP.RESERVED) * @LOW / 1024.,15,0) + ' ' + 'KB') AS RESERVED
,LTRIM(STR(SUM(TMP.DATA) * @LOW / 1024.,15,0) + ' ' + 'KB') AS DATA
,LTRIM(STR((SUM(TMP.USED) - SUM(TMP.DATA)) * @LOW / 1024.,15,0) + ' ' + 'KB') AS INDEX_SIZE
,LTRIM(STR((SUM(TMP.RESERVED) - SUM(TMP.USED)) * @LOW / 1024.,15,0) + ' ' + 'KB') AS UNUSED
FROM (
SELECT OBJ.ID AS ID, SUM(IND.ROWS) AS ROWS, SUM(IND.RESERVED) AS RESERVED, SUM(DPAGES) AS DATA,
ISNULL(SUM(USED), 0) AS USED, MAX(OBJ.CRDATE) AS CRDATE
FROM SYSINDEXES IND JOIN SYSOBJECTS OBJ ON IND.ID = OBJ.ID
WHERE OBJ.XTYPE='U' AND IND.INDID < 2
GROUP BY OBJ.ID
UNION
SELECT OBJ.ID AS ID, 0 AS ROWS, SUM(IND.RESERVED) AS RESERVED, ISNULL(SUM(USED), 0) AS DATA,
ISNULL(SUM(USED), 0) AS USED, MAX(OBJ.CRDATE) AS CRDATE
FROM SYSINDEXES IND JOIN SYSOBJECTS OBJ ON IND.ID = OBJ.ID
WHERE OBJ.XTYPE='U' AND IND.INDID = 255
GROUP BY OBJ.ID ) TMP
GROUP BY TMP.ID, TMP.CRDATE
-- 조건추가
--HAVING SUM(TMP.DATA) * @LOW / 1024. > 200 * 1024
ORDER BY SUM(TMP.DATA) DESC, SUM(TMP.USED) DESC
728x90
'DBMS > MSSQL' 카테고리의 다른 글
[MSSQL] 저장 프로시저 일괄 조회 권한 주는 쿼리 (0) | 2022.09.11 |
---|---|
[MSSQL] 트리거(Trigger) 잘못 설정하여 로그인 되지 않을 때 (0) | 2022.09.10 |
[MSSQL] 미러링 DB 상태 조회 (0) | 2022.09.02 |
[MSSQL] 미러링 계정 설정 (1) | 2022.08.12 |
[MSSQL] Database Mirroring 보안 구성 마법사 (0) | 2022.08.12 |