본문 바로가기

SQL Server 메모리 부족현상에 대한 대처 테스트 서버를 사용중에 발생한 현상이었다. 메모리 3G 정도에 사용자가 하나도 없는 한가한 상태의 서버였는데, 대용량의 테이블 복사와 인덱스 생성, Linked 서버와 연결시켜 이런 저런 작업을 하는데 왠지 모르게 서버가 버벅데는것 처럼 느껴졌다... 뭐지? 원격으로 접속하여 살펴보니.. 메모리가 95% 사용중.. 숨이 꼴딱꼴딱 넘어가기 일보직전인 것이다.. 그렇다고 SqlServr.exe를 죽일수도 없고.. 요걸 쑤욱~ 줄이는 방법이 없을까 살펴봤더니! sp_configure 'max server memory', 2048 ← MB가 default 인듯.. 2005 환경에서 실행했더니, 구성 옵션 'max server memory'이(가) 없거나 고급 옵션입니다. 라고 뱉어주더군.. 그래서 SSMS로 속.. 더보기
대용량 INSERT .. SELECT 작업 중 중지했을 때 대처 방안 8천만 건 정도의 Row를 가진 테이블을 가지고 작업 중에 난관에 봉착했다! target_table을 TRUNCATE 하고, 인덱스를 재정비 한 후, INSERT INTO target_table SELECT * FROM source_table 작업을 했는데 예상보다 시간이 너무 오래걸리는 것이다.. 8천만 건 넘기는데 대략 40시간..... OTL... (SELECT INSERT했을 때는 11분 정도 걸려서 너무 가볍게 봐버렸건 거다..) 하는 수 없이 SELECT INSERT 하고 인덱스 작업을 하는 것이 나을거라 판단하여, 기존 트랜젝션을 중지시켰는데, 이것이 죽질 않는다.. 강제로 죽여봤는데도 데이터는 계속 쌓여만 가네? 어라? sp_who 를 해보니 세션이 그대로 살아서 INSERT 작업을 진행중.. 더보기