개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

 

개발자에게 배우는 개발자교육! 구로 오라클자바교육학원 www.oraclejava.co.kr

 

 

 

* DUAL테이블은 데이터 딕셔너리와 함께 Oracle에 의해 자동으로 생성되는 테이블 입니다.

 

- DUAL테이블은 사용자 SYS의 스키마에 있지만 모든 사용자는

DUAL이라는 이름으로 엑세스 할 수 있습니다.

- DUAL테이블은 VARCHAR2(1)으로 정의된 DUMMY라는 하나의 열이 있으며

값을 가지는 하나의 행도 포함되어 있습니다.

- DUAL테이블은 사용자가 계산이나 사용자 함수등을 실행하고자 할 경우에 유용 합니다.

 

 

* ​아래와 같은 명령을 실제로 사용하는 개발자(또는 DBA)의 수가 얼마나 될 것이라 생각하십니까?

select USER into <some variable> from DUAL

아마 거의 모든 이들이 사용하고 있을 것입니다. DUAL은 호출될 때마다 새로운 논리적 I/O(Buffer I/O)를 생성합니다. 이 기능은 매우 유용하게 활용됩니다.
DUAL은 <somevariable> := USER와 같은 구문만큼이나 자주 사용되고 있습니다.
하지만 오라클 코드는 DUAL을 특수한 형태의 테이블로서 취급하며,

따라서 일반적인 튜닝 방법은 적용할 수 없다는 문제가 있습니다.

 

Oracle Database 10g에서라면 이에 관련한 걱정은 할 필요가 없습니다.
DUAL이 특수한 테이블이기 때문에, 논리적 I/O를 나타내는 consistent gets의 값도 줄어들며, event 10046 trace에서 확인할 수 있는 것처럼 optimization plan도 다른 형태로 나타납니다.

Oracle 9i에서 사용되는 DUAL의 FULL TABLE SCAN 대신,
10g에서는 FAST DUAL optimization plan을 사용하고 있다는 점을 주목하시기 바랍니다. 이러한 기능 개선을 통해 DUAL 테이블을 자주 사용하는 애플리케이션의 연속적인 읽기 작업 성능이 대폭적으로 향상되었습니다. ​

 

 

 

 

 

 

 

 

 

 

+ Recent posts