개발하는 월퐁잉
놀면서 쉬면서 코딩 하기
개발하는 월퐁잉
전체 방문자
오늘
어제
  • 분류 전체보기
    • DBMS
      • DBeaver
      • HeidiSQL
      • MSSQL
      • MYSQL
    • Cloud
      • Azure
      • AWS
    • 업무
      • Slack
      • IT-Tip
      • 산업안전교육
    • Vue
    • HTML
    • Java
    • Gradle
    • IntelliJ
    • GIT

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Trigger
  • Query
  • 권한설정
  • 미러링
  • IntelliJ
  • vue
  • 인텔리제이
  • 산업안전보건교육
  • DBeaver
  • MySQL
  • SQL Server
  • Eclipse
  • npm install
  • Vue.js
  • dba
  • GIT
  • ALTER TABLE
  • 근로자정기교육
  • 대한산업안전협회
  • MSSQL

최근 댓글

최근 글

티스토리

250x250
250x250
hELLO · Designed By 정상우.
개발하는 월퐁잉

놀면서 쉬면서 코딩 하기

[MSSQL]  테이블(Table) 용량 확인 쿼리
DBMS/MSSQL

[MSSQL] 테이블(Table) 용량 확인 쿼리

2022. 9. 7. 09:41
728x90

 

운영 하는 사이트가 활성화 됨에 따라

Data 양이 증가 되고 Table 을 주기적으로 관리를 하지 않으면 속도지연의 이슈로 발생이 될 수 있다.

 

나의 경우 Log, History 등 과 같은 추적목적인 경우 최소 6개월 의 Data 만 보관 할 수 있도록 하고 있다.

 

간혹 Table 관리가 되지 않아 Query를 통해 용량 확인 해야 하는 경우가 있어 정리 해 볼까 한다.


-- [1] 디비정보 확인
EXEC SP_HELPDB 조회하고자하는 DB명

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
    'DBMS/MSSQL' 카테고리의 다른 글
    • [MSSQL] 저장 프로시저 일괄 조회 권한 주는 쿼리
    • [MSSQL] 트리거(Trigger) 잘못 설정하여 로그인 되지 않을 때
    • [MSSQL] 미러링 DB 상태 조회
    • [MSSQL] 미러링 계정 설정
    개발하는 월퐁잉
    개발하는 월퐁잉
    놀멍 쉬멍 개발하는 퐁 - 기억은 사라지지만 기록은 남는다

    티스토리툴바