본문 바로가기
잡담

MS-SQL 퀴리를 이용한 테이블의 디스크 사용량 확인하기

by 공공정보 2020. 10. 30.
728x90

 

 

DB관리를 하다보면 테이블의 용량을 확인하고 싶을때가 있다...

 

 

그럴때 하는게... 보고서 메뉴의 "테이블의 디스크 사용" 확인을 하면 된다....

 

 

 

 

그런데, 용량이 작아서 에러없이 잘 표시가 될때는 전혀 문제가 되지 않는다...

 

 

그런데, 오류가 발생하여 보고 싶어도 못보는 경우가 발생할때...

 

 

어떻게 해야 할까?

 

 

그래서 찾은 명령어...

 

이렇게 하면 해당 테이블의 디스크 사용량을 표시해 준다.... 근데 한두개 볼때는 전혀 문제가 되지 않는다....

 

 

테이블이 100개 이상 된다면?

 

 

언제 타이핑을 쳐야 할지.... 그래서 만들어 봤다...

 

 	SELECT 	name, 			rows = convert (char(11), rowscnt), 			reserved = LTRIM (STR (reserved_page_count * 8, 15, 0) + ' KB'), 			data = LTRIM (STR (pages * 8, 15, 0) + ' KB'), 			index_size = LTRIM (STR ((CASE WHEN used_page_count > pages THEN (used_page_count - pages) ELSE 0 END) * 8, 15, 0) + ' KB'), 			unused = LTRIM (STR ((CASE WHEN reserved_page_count > used_page_count THEN (reserved_page_count - used_page_count) ELSE 0 END) * 8, 15, 0) + ' KB') 	from (SELECT id, name FROM DB명.dbo.sysobjects where type='u') tbl inner join  		(SELECT object_id, 				SUM (reserved_page_count) reserved_page_count, 				SUM (used_page_count) used_page_count, 				SUM ( 					CASE 						WHEN (index_id < 2) THEN (in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count) 						ELSE lob_used_page_count + row_overflow_used_page_count 					END 					) pages, 				SUM ( 					CASE 						WHEN (index_id < 2) THEN row_count 						ELSE 0 					END 					) rowscnt 		FROM DB명.sys.dm_db_partition_stats 		group by object_id) main on main.object_id = tbl.id  	order by name 
 
 
 

회사에서 관리하는 DB테이블의 사이즈를 확인해봤더니.... 대략 난감하다...

 

 

이전 개발자가 만들어 놓은 DB를 방치하다 싶이 지내다가 DB파일 용량이 20GB 가 넘어 가면서 이젠 안되겠다 싶어 테이블 디스크 사용량을 확인하기 시작했다...

 

 

그런데, 실제 데이터 용량보다 인덱스 용량이 5배나 더 많은 테이블 발견...

 

 

해당 테이블 인덱스 새로 구성하여 용량도 줄이고 성능도 10% 업시켰다..

 

 
디스크 사용량 (KB)


디스크 사용량 (KB)
저장갯수
전체용량
Data
Index
기타

저장갯수
전체용량
Data
Index
기타
1,797,057 
209,800
121,200
88,368
232

1,797,346 
209,864
121,224
88,392
248
2,354,937 
7,931,432 
1,103,136 
6,826,408 
1,888 
->
2,355,291 
2,265,848 
1,045,432 
1,219,824 
592
2,354,941 
2,033,952 
599,928
1,433,376 
648

2,355,299 
2,034,816 
600,064
1,434,016 
736
 

 

 

 

#MS-SQL #DB #DBMS #테이블용량 #용량확인 #쿼리


 

본 블로그의 글은 공공정보와 개인적 생각의 글 임을 알려드립니다.

또한 오류가 있는 부분이 있으면 댓글로 알려주시기 바랍니다.

 

감사합니다.

반응형

댓글