ablog

不器用で落着きのない技術者のメモ

Oracle の PL/SQL ネイティブ・コンパイルってなんじゃい?

PL/SQLのプログラムは、Oracleの処理の中で、性能問題になりやすいポイントです。ここでは、 9i以降に追加されたネイティブ・コンパイルの設定方法について書いてみたいと思います。

この機能の特徴は、PL/SQLのコードを全く変更せずに、PL/SQLプログラムの性能を向上できる可能性があることです。 PL/SQLプログラムをC言語のコードに変換後、共有ライブラリとして、Oracleプロセスにリンクされるため、 PL/SQLエンジン上でインタープリタで動作するより速く処理ができるという原理のようです。

http://tech.jsys-soft.jp/kaizen.php?itemid=391

PL/SQLC言語マシン語(共有ライブラリ)にコンパイルして実行するってことか。

ドキュメント等でも書かれていることですが、SQL主体のPL/SQLプログラムでは、あまり効果がありません。 PL/SQLのプログラムは、ロジック部分とSQL部分で、実行するエンジンを切替ながら動作していて、その中で、SQL文の処理は、 SQLエンジンで動作しています。冒頭でも記述しましたが、ネイティブ・コンパイル機能は、 PL/SQLエンジンでの処理部分の効率化であって、SQLエンジンの効率化ではないので、 SQL主体の処理には効果がなかったのではないかと考えられます。この場合、PL/SQLの処理内のSQL文は、 別にチューニングを行う必要があります。ですので、 SQL部以外に複雑なロジックのあるPL/SQLプログラムの性能カイゼンに利用してみては如何でしょうか。

http://tech.jsys-soft.jp/kaizen.php?itemid=391

なるほど、SQL部分の処理速度はあまり変わらないのか。