DUAL

目次

概要

 

Oracleにより自動生成されたDummyテーブルです。 SYSスキーマに存在しますが、DUALという名前で、すべてのユーザーが使用することができます。 ユーザー計算やユーザー関数を使用する場合に便利であり、select1 from dual;を実行して、WASのDBとの接続を確認するために使用されることもあります。

 

DUALテーブル実行過多解決

 

DUALテーブル実行過多解決

 

Oracleのパフォーマンス監視/分析ソリューションであるマックスゲージのPerformance Analysisを通じて日中のログを確認して見ましょう。

翻訳図

 

図のように1分間特定のセッションがグループ化された結果、Execution回数が毎分22万回以上で表示され、DUALテーブルの繰り返し使用が発生しています。

 

SQL実行回数過多の問題は、Loop Queryを単一のSQLに変更することが望ましいのです。

 

特に、上記のようにDUAL表について繰り返し実行する場合には、DUALテーブルのルックアップの負荷を減少させるためにSYS.X$ DUALを利用する方法があります。DUAL表を多く参照する環境に便利に使うことができます。

X$ DUAL vs DUAL

 

SYS> create or replace view xm$dual as select dummy from sys.x$dual;
SCOTT> SELECT dummy into :v_dummy FROM DUAL;
SCOTT> SELECT dummy into :v_dummy FROM XM$DUAL;

 

それぞれのSQLを100,000回LOOP実行
DUAL= Response Time:7.6秒
XM$ DUAL= Response Time:4.3秒