본문 바로가기
vita_Programing

MSSQL 개별 테이블 사용 용량 확인하는 방법

by lemonvita 2024. 5. 27.
728x90
반응형
728x90

 

 

 

MSSQL 개별 테이블의 디스크 사용 용량 확인하기

 

 

 

데이터베이스 관리자 여러분 주목하세요.

이번 글은 MS-SQL 서버에서 개별 테이블의 디스크 사용 용량을 확인하는 다양한 방법을 소개해 드리려고 합니다.

효율적인 시스템 운영과 성능 최적화를 위해서는 정기적으로 테이블의 디스크 사용량을 모니터링하는 것이 중요해요. 특히 데이터의 양이 늘어나면서 테이블 크기도 점점 커지고 있기 때문에, 각 테이블이 얼마나 많은 디스크 공간을 차지하고 있는지 파악하는 것이 중요합니다.

이를 통해 시스템 성능을 유지하고, 저장소 비용을 관리하며, 용량 확장이 필요한 시기를 적절히 판단할 수 있습니다.

오늘은 SQL 쿼리를 사용한 기본적인 방법부터 시스템 저장 프로시저와 동적 관리 뷰를 활용하는 방법까지 다양한 접근법을 소개해 드리겠습니다. 이를 통해 여러분이 테이블 별 디스크 사용량을 손쉽게 모니터링하고, 데이터베이스의 전반적인 건강 상태를 유지하는 데 필요한 유용한 도구와 팁을 얻으실 수 있을 거예요.

 

 

MSSQL 개별 테이블의 디스크 사용 용량 확인

 

 

 

 

테이블 디스크 사용 용량 확인 - SSMS에서 간편하게 보기

 

MSSQL 개별 테이블의 디스크 사용 용량 확인

 

sql server SSMSM에서 확인하는 방법입니다.

디스크 사용 용량을 확인할 테이블이 포함된 DB명에서 우클릭 > Report(보고서) > Standard Reports > Disk Usage by Table 의 순서로 선택해 주시면 다음과 같은 결과를 확인할 수 있습니다.

 

 

각 열의 설명은 다음을 참고해 주세요.

 

  • Recoeds : 레코드 수,  테이블의 행의 갯수
  • Reserved : 예약된 양, 할당된 디스크 용량
  • Data : 데이터 양, 실제 사용된 디스크 용량
  • Indexes : 인덱스 양, 인덱스에 할당된 디스크 용량
  • Unused :  미사용된 양, 할당은 되었지만 사용되지 않은 디스크 용량

이상의 결과로 보았을 때 실제 디스크에 사용된 용량은 Data + Indexes 라고 보시면 됩니다.

 

 

 

테이블 디스크 사용 용량 확인 - 쿼리로 확인하기

추가적으로, MS-SQL에서는 SSMS 뿐 아니라 쿼리를 통해서도 테이블이 사용하는 디스크 용량을 확인해 볼 수 있습니다.

대표적으로 sp_spaceused 시스템 저장 프로시저를 활용하면 손쉽게 테이블의 디스크 사용량을 확인할 수 있습니다.

 

sp_spaceused를 사용한 테이블 디스크 사용량 확인

-- 특정 테이블의 디스크 사용량을 확인하는 쿼리
EXEC sp_spaceused '테이블명';

 

 

 

sys.dm_db_partition_stats를 사용한 용량 확인

MS-SQL에서는 sys.dm_db_partition_stats 뷰를 사용하여 테이블의 디스크 사용량에 대한 더 상세한 정보를 볼 수 있습니다. 다음은 테이블의 디스크 사용량을 보다 세부적으로 확인할 수 있는 쿼리입니다.

-- 특정 테이블의 디스크 사용량을 상세히 확인하는 쿼리
SELECT 
    t.NAME AS TableName,
    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
WHERE 
    t.NAME = '테이블명'
GROUP BY 
    t.Name;

 

 

 

모든 테이블의 디스크 사용 용량 확인하기

데이터베이스 내 모든 테이블의 디스크 사용량을 한 번에 확인하고자 한다면 다음 쿼리를 사용하면 됩니다.

-- 데이터베이스 내 모든 테이블의 디스크 사용량을 확인하기
SELECT 
    t.NAME AS TableName,
    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
GROUP BY 
    t.Name
ORDER BY 
    TotalSpaceKB DESC;

 

위 쿼리는 데이터베이스 내 모든 테이블의 디스크 사용량을 총 공간(TotalSpaceKB), 사용 공간(UsedSpaceKB), 미사용 공간(UnusedSpaceKB)으로 나누어 보여주며, 전체 공간을 기준으로 내림차순 정렬합니다.

 

 

 

 

테이블 디스크 사용 용량 확인 시 주의할 점

 

MS-SQL 서버에서 테이블의 디스크 사용 용량을 확인할 때는 몇 가지 주의할 점이 있는데요. 정확한 정보를 얻고, 시스템 성능에 영향을 최소화하기 위해 아래 사항들을 참고해 볼 필요가 있습니다.유의해야 합니다.



1. 실행 권한
쿼리를 실행하기 위해서는 적절한 권한이 필요합니다. 일반적으로 sp_spaceused와 같은 시스템 저장 프로시저를 실행하거나 시스템 뷰 (sys.tables, sys.indexes, sys.partitions, sys.allocation_units)에 접근하려면 데이터베이스에 대한 충분한 권한이 있어야 합니다. 일반적으로는 db_owner 또는 db_datareader 역할이 이러한 작업을 수행할 수 있습니다.

2. 잠금과 성능 영향
디스크 사용량을 조회하는 쿼리는 비교적 가벼운 작업이지만, 대규모 데이터베이스에서 너무 자주 실행할 경우 시스템 성능에 악영향을 줄 수 있습니다. 특히, 테이블의 데이터가 자주 변경되는 환경에서는 쿼리 실행 시 잠금 현상이 발생할 수 있으니 조심해야겠죠.

3. 정확한 시점
디스크 사용량은 테이블의 상태에 따라 달라질 수 있습니다. 예를 들어, 대량의 데이터가 삽입되거나 삭제된 후, 인덱스가 재구성된 후 등 다양한 상황에서 디스크 사용량이 변할 수 있습니다. 따라서, 특정 시점의 정확한 디스크 사용량을 확인하려면 쿼리를 실행하는 시점의 데이터 상태를 잘 파악하고 있어야 합니다.

4. 파일 그룹과 파티셔닝
데이터베이스가 여러 파일 그룹으로 구성되어 있거나 테이블이 파티셔닝된 경우, 각 파일 그룹이나 파티션 별로 디스크 사용량이 다를 수 있습니다. 이러한 환경에서는 단순히 테이블 단위의 디스크 사용량 외에도 파일 그룹 및 파티션 별 사용량을 따로 조회해야 전체적인 디스크 사용량을 정확히 파악할 수 있습니다.

5. 쿼리 최적화
디스크 사용량을 조회하는 쿼리가 복잡해질 경우, 특히 모든 테이블의 디스크 사용량을 조회하는 쿼리는 실행 시간이 오래 걸릴 수 있습니다. 이럴 때는 쿼리를 최적화하거나, 필요한 테이블에 대해서만 쿼리를 실행하여 시스템에 가해지는 부하를 줄이는 것이 좋습니다.

6. 데이터 정리
테이블의 디스크 사용량은 실제 데이터와 인덱스, 비어 있는 페이지 등을 모두 포함한 값입니다. 따라서, 사용하지 않는 인덱스를 삭제하거나 데이터 정리 작업 (예: DBCC SHRINKDATABASE, DBCC SHRINKFILE)을 통해 공간을 최적화한 후 디스크 사용량을 재확인하는 것이 좋습니다.

7. 비정상적인 디스크 사용량 증가 확인
디스크 사용량이 비정상적으로 증가한 경우, 로그 파일 크기 증가나 잘못된 인덱스 설정, 비효율적인 쿼리 등이 원인일 수 있습니다. 이럴 때는 해당 테이블의 디스크 사용량 외에도 전체적인 데이터베이스 설정과 운영 방식을 점검해보는 것이 필요합니다.

728x90
반응형