システムのテスト工程などでSQLの性能試験を行った際に、SQLの実行計画は悪くないはずなのに、期待していたよりレスポンスが遅かったときなどに、何で遅いのか・何の処理過程で時間を消費しているのか調べたくなる時があります。
今回は、SQLトレースを用いて、SQL実行時の処理過程や各処理時間といった内訳を調査する方法について調べてみました。
続きを読む非効率な実行計画が選択されたことで、SQLの性能が悪かった場合、Oracle DatabaseではSQLにヒント句を付与することで、効率的な実行計画を選択させる手段を採ることが多いかと思います。
一方で、パッケージ製品が発行するSQLや、様々な事情によりアプリケーション(が発行するSQL文)の改修が困難な場合、SQLにヒント句を付与する対応ができない場合もあります。
Oracle DatabaseにはSQLの実行計画を管理する、SQL Plan Management(SPM: SQL計画管理)という機能があり、これを使用することでSQLを書き換えることなく、意図した実行計画を選択させることができるので、今回はこのやり方について調べてみました。
続きを読むOracle Databaseにはテーブルの結合方法として、以下の3つがあります。
Oracle Databaseをご存じの方は、結合結果の1件目を速く返却したい様な逐次処理ではネステッドループ結合が、結合結果の全件を速く返却したい様なバッチ処理ではハッシュ結合が優位といった様なことを聞いたことがあるかと思います。
今回は、それぞれの結合を実行した際のSQLトレースを取得して、テーブル結合時のテーブルアクセスの状況から、上記の優位性があると言われる様な挙動を示すのか、実機検証をして確認してみました。
続きを読む