기술

[오라클 & 티베로]쿼리 캐쉬메모리 옵션 설정 CUCURSOR_SHARING

또리줌마 2023. 12. 11. 12:15
반응형

[CUCURSOR_SHARING]

 

SQL 조건절에 있는 상수 값들을 변수로 전환시켜 parsing 함으로써 cursor를 공유할 수 있도록 해줍니다.

 

- EXACT : 모든 문장이나 변수까지 동일해야 동일한 문장으로 인정
- SIMILAR : 문장은 동일하고 바인드 변수값이 다를 경우에도 동일한 문장으로 인정
- FORCE : 문장은 동일하지만 상수값이 다른 sql일 경우에도 동일한 문장으로 인정

 

[예시]

alter session set cursor_sharing=force;
INSERT INTO ZZ_TEST (AA, BB) VALUES ('1', 'a');
INSERT INTO ZZ_TEST (AA, BB) VALUES ('2', 'b');
INSERT INTO ZZ_TEST (AA, BB) VALUES ('3', 'c') ;
    .....
INSERT INTO ZZ_TEST (AA, BB) VALUES ('9998', 'aa');
INSERT INTO ZZ_TEST (AA, BB) VALUES ('9999', 'bb');
INSERT INTO ZZ_TEST (AA, BB) VALUES ('10000', 'cc') ;
alter session set cursor_sharing=exact;

 

 

 

cursor_sharing=force로 하면 constant들을 내부에서 bind화 시켜 주기 때문에, 위 insert 문들을 모두 하나의 쿼리로 재사용할 수 있다고 합니다.( 10000건의 쿼리가 실제 1건의 쿼리로 등재되어 재사용)

  =>  INSERT INTO ZZ_TEST (AA, BB) VALUES ( :txt1, :txt2); 

 

 

툴(Toad, tAdmin)에서 직접 대용량 파일 업로드 수기로 할 경우가 사용하면 편리합니다.

(티베로에서 대용량 엑셀 파일을 tAdmin.ext 툴에서 insert 문을 이용하여 업로드하다가 DB가 다운되어버리는 문제가 있었음TT)