Query Dispatcher

V5R2 から SQE (SQL Query Engine) という新しくオブジェクト指向で(!)設計されたデータベースエンジンがサポートされるようになりました。
これに伴って、今までのデータベースエンジンは CQE (Classic Query Engine) という名前が改めて呼ばれるようになっています。
将来のどこかのリリースでは SQE のみになるのでしょうが、現在のところは SQL によって SQE で実行されたり CQE で実行されたりするようになっています。

どのみち SQL を解析(パース)する、というのはデータベースエンジンで必ず実行される処理です。SQL 解析の段階で、実行プランの中にどちらのエンジンに実行させるかもあわせて決めてディスパッチしてしまえばいいわけで、このディスパッチというものが特別負荷がかかる、とかオーバーヘッドのある過程とは言えません。
この、SQL によって SQE か CQE にディスパッチする機能が Query Dispatcher といわれるものになります。

Query Dispatcher による SQE / CQE へのディスパッチにはきちんとした基準があります。
SQE にディスパッチされるものは以下のようなものです。

V5R2

V5R2 で SI07650 が適用されている場合

V5R3

V5R3 でも SQE にディスパッチされないもの

V5R4

V5R4 でも SQE にディスパッチされないもの

Select/Omit のある論理ファイルや部分的に切り出してきたキーなどへの参照があった場合、Query Dispatcher はもし SQE へすでにディスパッチされていた場合は CQE への再ディスパッチを行います。
再ディスパッチするのにオーバーヘッドが 15% 程度ある、というように言われていますが、あまり正確な物言いではありません。これは最適化にかかっている時間が 15% 余計にかかるということです。
では最適化にかかる時間はどんなものかというと、たとえばこちらの例を見てみると 338 ミリ秒です。これが CQE に再ディスパッチされるとこの 15% 程度の時間 (50.7 ミリ秒) がさらに追加される、というだけのことです。SQL の実際の実行時間の方がはるかに長いわけで、この最適化の時間を惜しんで肝心の実行が遅くなってしまっては本末転倒です。

また、V5R3 から IGNORE_DERIVED_INDEX というオプションで DDS での Select/Omit などを無視させることができます。
もともと、LF に対して SQL を実行するのはあまりいいやり方ではありません。
LF での選択などを前提とせず、SQL できちんと結果が出ないとあとでわけわかんなくなりますので、そういったところの移行もけっこう重要な課題ですね。

[Top Pageに戻る]

[PR] | 貴金属 買取ハウスクリーニング韓国食材転職サイトSEOアクセス解析ハウスメーカーレンタルオフィスSEO対策消費者金融不動産担保ローン時計車 買取ハワイ挙式アスクル転職生命保険テンプレート沖縄旅行動画免許合宿二輪引越し消費者金融税理士ゴルフ会員権留学レーシックマッサージFX投資信託くりっく365アフィリエイト育毛剤FXホームページ制作デイトレードFXタイバンコクハワイ レンタカーベスト ハワイ ホテル レーツバリ島年末年始ハワイHawaii hotelsHawaii Activitiesbhhrホノルルマラソン
【運営会社「パラダイムシフト」サービス】 ハワイ現地オプショナルツアーリラックマ) - ビジネスクラス航空券 - 格安航空券(1) - 格安航空券(2) - 海外ホテル - 韓国旅行
無料ホームページ作成 - レンタルサーバー - 携帯ホームページ - ブログ - ホテル 予約 - タイムシェア - ヴィラ - ハワイ コンドミニアム - バリ島 ホテル - ハワイ 不動産 - プーケット ホテル