db/mssql
mssql 테이블 사용 용량 조회
strange-dev
2025. 4. 14. 19:43
반응형
mssql 테이블 사용 용량 조회
mssql 테이블 별 사용 용량 확인 쿼리
DECLARE @SchemaName SYSNAME = 'dbo';
DECLARE @TableName SYSNAME;
DECLARE TableCursor CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = @SchemaName;
OPEN TableCursor;
FETCH NEXT FROM TableCursor INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT '테이블: ' + @TableName;
EXEC sp_spaceused @TableName;
PRINT '----------------------';
FETCH NEXT FROM TableCursor INTO @TableName;
END;
CLOSE TableCursor;
DEALLOCATE TableCursor;
쿼리 설명
1. dbo 스키마에 있는 모든 테이블 이름을 가져옵니다.
2. 각 테이블 이름을 하나씩 순회하면서 다음 작업을 반복합니다.
- 테이블 이름을 출력합니다.
- sp_spaceused 저장 프로시저를 실행하여 해당 테이블의 공간 사용 정보를 출력합니다.
- 구분선을 출력합니다.
쿼리 상세 설명
- DECLARE : 변수 선언
- DECLARE TableCursor CURSOR FOR : 커서(Cursor)를 선언하는 부분이에요. 커서는 테이블의 행들을 하나씩 순회하면서 작업을 수행할 수 있게 해주는 데이터베이스 객체라고 생각하시면 됩니다. foreach 실행하기 위한 list라고 생각하시면 됩니다.
- SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = @SchemaName; : dbo 스키마에 있는 모든 테이블 이름을 가져오는 쿼리
- OPEN TableCursor; : 선언된 TableCursor를 실제로 사용하는 상태로 만드는 명령어예요. 커서를 열어야 데이터를 읽어올 수 있습니다.
- FETCH NEXT FROM TableCursor : 커서에서 다음 행(여기서는 테이블 이름)을 가져오는 명령어.
- INTO @TableName: 가져온 테이블 이름을 @TableName 변수에 저장하라는 의미입니다. 처음 실행될 때는 첫 번째 테이블 이름이 @TableName에 저장됩니다.
- WHILE : 반복문입니다. 특정 조건이 참인 동안 BEGIN과 END 사이의 코드를 계속 실행합니다.
- @@FETCH_STATUS: 가장 최근의 FETCH 문의 실행 결과를 나타내는 시스템 함수입니다.
- 0 : FETCH가 성공적으로 행을 가져왔음을 의미합니다.
- -1 : 가져올 행이 더 이상 없음을 의미합니다.
- -2 : FETCH가 실패했거나 행이 없음을 의미합니다.
- 따라서 WHILE @@FETCH_STATUS = 0은 "더 이상 가져올 테이블이 없을 때까지"라는 의미가 됩니다.
- PRINT '테이블: ' + @TableName; : 아래 이미지
- EXEC sp_spaceused @TableName; : 아래 이미지
- 루프의 마지막 부분에서 다시 다음 테이블 이름을 커서에서 가져와 @TableName 변수에 저장합니다. WHILE 조건이 다시 평가되고, 아직 가져올 테이블이 있다면 반복 실행됩니다.
- CLOSE TableCursor; : 더 이상 커서를 사용하지 않을 때 닫아주는 명령어예요. 시스템 리소스를 해제하는 역할을 합니다.
- DEALLOCATE TableCursor; : 선언했던 커서 객체를 메모리에서 완전히 제거하는 명령어예요. CLOSE를 먼저 실행한 후에 DEALLOCATE를 실행해야 합니다.
sp_spaceused 조회
2025.04.13 - [db/mssql] - mssql exec sp_spaceused table
mssql exec sp_spaceused table
mssql exec sp_spaceused table name exec sp_spaceused 테이블명현재 데이터베이스의 테이블, 인덱싱 된 뷰 또는 Service Broker 큐에서 사용하는 행 수, 예약된 디스크 공간 및 디스크 공간 전체 데
st-d.tistory.com
반응형