본문 바로가기
개발 관련

mssql tempdb dbfile 삭제

by 조이플워니 2016. 3. 29.

머신 사양들이 좋아지면서 해당 리소스를 충분히 활용하기 위해 


그리고 mssql 의 성능 향상을 위해 tempdb 파일을 늘리는데.. 


여러 자료를 조합해 본 결과 tempdb 의 데이터 파일은 머신의 코어 수와 맞추면 된단다..


단 요즘은 코어가 하도 많아서... 8개 이상은 의미가 없다... 고 한다 


뭐 스트레스 테스트까지는 해보지 않아서 정확한건 모르겠지만.. 


선인들이 해보셨으면 나도 비슷하다 생각하고... 파일을 늘려놨는데...



파일 늘리기 전 상황을 캡쳐해놓은것이 없어 파일을 늘린것이 얼마나 효과가 있는지 잘 모르겠다.. 


그래서 역으로 테스트를 해보려 한다.. 

(tempdb datafile이 8개인경우 먼저 캡쳐 && 4개 줄여서 테스트 ㅋㅋ)


근데 웃긴건 tempdb datafile 이 만들때는 잘 만들어지는데 지워지지 않는다 ㅋㅋㅋㅋㅋ




그래서 잘~~~ 찾아보니.. datafile이 비어지지 않아서란다 ㅋㅋㅋ


자동으로 비우고 해주면 되지... 알파고도 나온마당에 뭘 또 에러 띄우고 그러시나.. 



암튼 지우기 전에 아래의 쿼리를 실행하고 돌리쟈.. 


==================================================================

USE [tempdb]

GO

DBCC SHRINKFILE ([데이터파일명], EMPTYFILE);

GO


use [master]

ALTER DATABASE [tempdb]  REMOVE FILE [데이터파일명]

GO

===================================================================


그럼 겁내 잘지워진다 ㅎㅎㅎㅎ




근데... 실제 사용자들이 사용하는 DB는 아래의 메세지와 함께 또.. 지워지지 않는다.. 


=========================================================================================


DBCC SHRINKFILE: 페이지 9:1320은(는) 작업 테이블 페이지이므로 이동할 수 없습니다.

메시지 2555, 수준 16, 상태 2, 줄 3

파일 "tempdb8"의 일부 내용을 다른 위치로 이동할 수 없어 emptyfile 작업을 완료할 수 없습니다.

DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.


==========================================================================================


이유인 즉슨.. 해당 데이터파일이 사용중이다..(내지는 다른데가 사용중이라 비울수 없다..)


그래서 찾아보니... (http://sqlserverzest.com/2012/10/07/msg-2555-level-16-state-1-line-1-error-dbcc-shrinkfile-with-emptyfile-option/


위와 같은 메세지가 날때는 


1. 외부 커넥션을 다 끊던지..

2. 서버를 재시작 하라고 하신다 ㅎㅎㅎㅎ


실운영 서버라 테스트는 못했지만.. 꼭 필요한 경우라면 진행 가능할듯 하다. ㅎ


그럼 오늘의 정리는 이만 ㅎ



댓글