퍼지 작업 관련 문의 0 1 1,404

by 고수로. [SQL Query] [2018.04.19 09:34:35]


안녕하세요. 현재 예전 데이터에 대한 삭제 작업을 진행하려 합니다.

삭제 대상 테이블별로 프로시저를 각각 만들어 삭제를 하려 하는데요.

이때 제가 몇가지 궁굼증이 있어 해결이 될까 싶어 문의를 드립니다.

질문사항.

1. Delete가 되는 과정에서 옛날 데이터, 즉 현재는 전혀 프로그램에서 참조하지 않는 데이터들인데 Lock이 발생될 가능성이 있을까요.

2. 특정 테이블은 Index를 태우지 못해 데이터 삭제되는 시간이 오래 걸리는 상황이 있을것 같습니다. 이때 (Lock 이외) 문제가 발생되는 가능성이 있을까요.

3. plsql에서 For Loop에 대한 작업에서 1번째 Loop문을 감지 할수 있을까요. (따로 변수에 반복 횟수를 체크하는 기능 탑제 제외)

위 3가지 문의에 대해 아직 답을 찾지못해 도움을 요청 드립니다.

 

by 타락천사 [2018.04.23 12:18:44]

1. row 단위 락이라, 삭제 row 를 app 에서 참조하지 않으면, lock 이 발생 하지 않습니다.

2. I/O 가 지나치게 느려지지 않는 한 문제 없습니다. 삭제 시, 모니터링 하면서, OS 및 Application 성능 모니터링 하세요

  ( 한번에 왕창 지우시는 것보다는  5만건 삭제, commit, sleep 이후 반복, sleep 시간을 수행 하시는 환경에 맞춰 

3. 보통 이렇게 지우지 않나요 ? ㅇㅇ? 질문이 정확히 무엇인지 제가 모르겠네요..

begin 

for i in 1 .. 1000 loop

delete ... where 조건 and rownum < 50001;

commit;

dbms_lock.sleep(60);

end loop ; 

end 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입