오라클 프로시저로 대량 insert시 트리거 속도 저하문제 질문드립니다. 1

by 구구기비 [2024.01.02 11:36:39]


안녕하세요. 궁금한게 있어 여쭈어봅니다.

오라클 버전은 19c이며, 하나의 프로시저로 대량의 데이터를 한번에 isnert하고 있습니다.

insert rTemp1 ( temp1, temp2, temp3, temp4 )

selcet *** from dual;

 

insert rTemp2 ( temp1, temp2, temp3, temp4 )

selcet *** from dual;

 

대충 이런 구조이며, 서로 fk가 있기때문에 한 트랜잭션에서 커밋을 하고자 합니다.

 

그런데, 저 테이블 중, 트리거에서 해당 트랜잭션 외 테이블에 insert 해주는 속도가 너무 느린데 원인 파악이 되지않습니다...

 

해당 insert문을 로컬에서 직접 실행 할 경우, 25분정도 소요되는데, 프로시저로 실행 시, 3배이상 더 소요가 되는데 

혹시 오라클 자체에 이런 이슈가 있는지 아시는분은 답글 부탁드립니다.

 

감사합니다.

 

 

 

by 마농 [2024.01.02 17:21:17]

1. 프로시저 내 쿼리와 직접실행 쿼리가 다른 경우
- 프로시져 내 쿼리는 바인드 변수로 조건을 주고 있는데
- 직접 실행 시 바인드 변수가 아닌 상수값을 조건으로 주고 실행한 것은 아닌지요?
- 두 쿼리가 다르다면? 실행계획도 다를 수 있습니다.
2. 트리거 동작 로직중에 비효율은 없는지?
- 비효율적인 로직이 있지는 않은지?
- 적절한 인덱스가 없는 것은 아닌지?

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