상세 컨텐츠

본문 제목

literal sql문제에 대해서-개발자 필독!!-그리고 반영하기 바람

프로그래밍/DB

by 라제폰 2008. 12. 29. 18:22

본문


literal sql문제에 대해서-개발자 필독!!-그리고 반영하기 바람  
literal sql문제에 대해서(concerned with BASE4)              
                                                                                                             
                                                                                                             



안녕하세요.
오라클의 성시철입니다.
이번 BASE4의 진단결과 DATABASE내의 LITERAL SQL문제가 새롭게 제기 되었습니
다.
똑 같은 SQL의 경우 ORACLE은 PARSING을 다시 하지 않고 재사용을 하게 되는데
LITERAL SQL의 경우는 재사용이 되지 않고 다시 PARSING을 하게 되므로 DATABASE

부하를 주게 되는 것이지요.
가령 다음과 같은 QUERY가 있다면
select ename from emp where deptno=10;
select ename from emp where deptno=20;
oracle은 두개가 다른 sql문으로 생각하여 parsing을 두번합니다.
그러나
select ename from emp where deptno=:변수;
로 처리하고 프로그램내에서 변수를 처리하면 sql문이 parsing을 한번 합니다.
jdbc program중에 나타 날수있는 경우는 다음과 같습니다.
String query_String="select ename from emp where deptno="+dept_variable;
로 하여 executeQuery를 수행하면 이 문장은 database내에 계속에서 새로
parsing이 됩니다.
그러나
String query_String="select ename from emp where deptno=?";
으로 고쳐서 prepareStatement를 사용해서 setInt(deptno_variable)을 사용할경
우는
같은 sql로 간주하여 parsing을 하지 않습니다.

이상의 문제는 jdbc에서만의 문제가 아닙니다. plsql이던 sql*plus에서이든
forms에서든
database로 sql을 발생시키는 모든 프로그램에 관련 된 것입니다.
jdbc가 아닌 pl/lsq에 대한 내용에 대해서도 혹시 의문이 있으시면 제게
문의해 주십시요.

현재 base4에서 발생하는 문제의 원인이 e-biz의 문제 인지는 확실하지는 않습니
다만
현제 base4의 문제가 가장 중요한 issue로 제기되고 있는 상황이니 특별히 base4

사용하고 있고 사용할 계획이 있는 곳에서는 신경써서 수정을 해주십시요.
그리고 어차리 오라클 database에서는 모두 적용되는 문제이니 literal sql이 발
생되지 않는
방향으로 프로그램을 진행시켜 주십시요.

관련글 더보기