by 이기락 [Oracle Tuning] 프로시저 insert WAS [2019.11.30 07:14:57]
was에서 insert 작업을 하는데 아래 두가지 방법중 어떤것이 테이블에 부하가 덜 갈까요?
현재 운영에서 [방법1]로 하고 있는데 5명이 동시 작업을 하면 10분이상 걸려 버립니다.
모니터링 하는 부서에서 테이블LOCK이 오래 발생한다고 연락이 오고 있습니다.
참고로 COMMIT은 웹특성상 마지막에 단1번만 해야 합니다.
[방법1]은 조회시간 + INSERT 시간 동안 테이블을 LOCK 걸고 있을것 같고
[방법2]는 SELECT 하는 동안은 테이블 LOCK이 안 걸릴것 같은데
맞나요?
----------------------------------------
쿼리1개를 돌려 봤을때
SELECT 조회만 하는 시간 :30초
INSERT 하는 시간 : 1분
----------------------------------------
[방법1]
INSERT INTO 테이블1
(컬럼1,컬럼2...)
SELECT 컬럼1,컬럼2 ...
FORM 테이블2
[방법2]
DECLARE
SELECT 커서 선언 + BULK + LIMIT 1000 으로 처리
LOOP
--INSERT 작업
INSERT INTO 테이블1 ;
~~
END LOOP;
END;