X

オラクルエンジニア通信では、オンプレミスからクラウドまで、オラクルテクノロジーの最新情報をお届けします

Oracleのオプティマイザとは何か?~ソースコードを書いているエンジニアが語る

RDBMS にとってクエリ・オプティマイザは、最も重要なコンポーネントの一つですが、その動作についてはあまり知られておらず、ブラックボックスだと思われている方が多いようです。

このコラムでは、Oracle の開発部門で、オプティマイザのソースコード修正を担当している立場から Oracle Database のオプティマイザの基本動作や機能、歴史について紹介していきます。




Oracleのオプティマイザとは何か?

オプティマイザを一言でいうと「問い合わせ処理の最適化を行う機能」です。

では、「問い合わせ処理の最適化」とはどういうことでしょうか?

これも口で説明するのは簡単な話で、問い合わせの実行時間を最小化するように処理方法を決めることです。

あくまでオプティマイザの役割は実行計画を立てるまでであり、問い合わせの処理にかかる時間のうち、この実行計画を立てるまでの時間を Oracle Database では Compile Time と呼んでいます。

ユーザーが入力したSQLを最適化し、Oracle Database が実行可能な形式に変換するという意味では、一般的なプログラミング言語でのコンパイラと同じような役割を担っているとも言えるでしょう。

また、オプティマイザは、問い合わせをどのように処理をするかを決める機能であるため、しばしば RDBMS の頭脳とか心臓部とか言われたりもします。

その重要性から、オプティマイザは Oracle Database が世に出て何十年も経った今でも日々進化しています。

もちろんオプティマイザは、Oracle Database のパフォーマンスに対するアプローチの一部に過ぎませんが、RDBMS のコア機能であり、問い合わせを実行する際には必ず使用される機能ですから、データベースの大規模化が進み、複雑な問い合わせが増えれば増えるほどその重要度が増していくこと間違いないでしょう。

オプティマイザの出来一つで、パフォーマンスが何十万倍以上も違うってことはざらにあるのですから。

では、肝心の「どうやって問い合わせ処理を最適化するのか?」についてはどうでしょうか?

ここまでくると少しテクニカルな話になってくるので、うまく説明できない方もいるのではないかと思います。

次回は、この問いに回答すべく Oracle Database のオプティマイザの構成要素について見ていきます。






Oracle Database のソースコードを書いているエンジニアが語る "Oracle のオプティマイザ"


日本オラクル株式会社 Sustaining Engineering
真下 哲(ましも さとし)

製品のソースコード修正を担当する Sustaining Engineering 部門において、オプティマイザを担当する立場から、Oracle Database のコア機能であるオプティマイザについて語ります。


Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.