8천만 건 정도의 Row를 가진 테이블을 가지고 작업 중에 난관에 봉착했다!
target_table을 TRUNCATE 하고, 인덱스를 재정비 한 후,
INSERT INTO target_table SELECT * FROM source_table 작업을 했는데 예상보다 시간이 너무 오래걸리는 것이다..
8천만 건 넘기는데 대략 40시간..... OTL... (SELECT INSERT했을 때는 11분 정도 걸려서 너무 가볍게 봐버렸건 거다..)
하는 수 없이 SELECT INSERT 하고 인덱스 작업을 하는 것이 나을거라 판단하여, 기존 트랜젝션을 중지시켰는데,
이것이 죽질 않는다.. 강제로 죽여봤는데도 데이터는 계속 쌓여만 가네? 어라?
sp_who 를 해보니 세션이 그대로 살아서 INSERT 작업을 진행중...
해당 프로세스를 죽이려고 KILL spid 실행하니 cmd 가 INSERT 에서 KILLED/ROLLBACK 으로 나온다..
다시 이걸 죽이려고 KILL spid 를 하니
SPID 89: 트랜잭션 롤백이 진행 중입니다. 예상 롤백 완료율은 91%, 남은 시간은 281초입니다
이렇게 나오네..
결론은 롤백이 다 될때까지 기다렸다는 것... 다행히도 롤백 진행률과 남은시간이 표시되어 안심이 되었음..
모를 때 함부로 덤비지 맙시다 ^^
좋은 경험이었음!
target_table을 TRUNCATE 하고, 인덱스를 재정비 한 후,
INSERT INTO target_table SELECT * FROM source_table 작업을 했는데 예상보다 시간이 너무 오래걸리는 것이다..
8천만 건 넘기는데 대략 40시간..... OTL... (SELECT INSERT했을 때는 11분 정도 걸려서 너무 가볍게 봐버렸건 거다..)
하는 수 없이 SELECT INSERT 하고 인덱스 작업을 하는 것이 나을거라 판단하여, 기존 트랜젝션을 중지시켰는데,
이것이 죽질 않는다.. 강제로 죽여봤는데도 데이터는 계속 쌓여만 가네? 어라?
sp_who 를 해보니 세션이 그대로 살아서 INSERT 작업을 진행중...
해당 프로세스를 죽이려고 KILL spid 실행하니 cmd 가 INSERT 에서 KILLED/ROLLBACK 으로 나온다..
다시 이걸 죽이려고 KILL spid 를 하니
SPID 89: 트랜잭션 롤백이 진행 중입니다. 예상 롤백 완료율은 91%, 남은 시간은 281초입니다
이렇게 나오네..
결론은 롤백이 다 될때까지 기다렸다는 것... 다행히도 롤백 진행률과 남은시간이 표시되어 안심이 되었음..
모를 때 함부로 덤비지 맙시다 ^^
좋은 경험이었음!
'SQL > 도움말 팁들!' 카테고리의 다른 글
[MSSQL] 자주 사용하는 전역변수(Global Variables) (0) | 2011.11.15 |
---|---|
SQL Server 메모리 부족현상에 대한 대처 (0) | 2011.10.25 |
테이블 row count 빠르게 계산하는 방법 (0) | 2011.10.18 |
SQL Server 2005에서 사용하지 않는 테이블을 찾아 정리하는 방법 (0) | 2011.10.18 |
DATETIME에서 지원하는 가장 빠른 날짜가 1753년인 이유는? (0) | 2011.09.26 |