【SQL】繰り返し実行するマスタ系の参照SQLをチューニングする方法

ここではORACLEデータベースのSQLで、繰り返し実行されるマスタ系テーブルを参照するSQLをチューニングする方法を紹介します。

SQLの実行計画の見方や確認方法については↓で紹介していますので参考にしてください。
>>【ORACLE】SQLの実行計画の見方
>>【ORACLE】SQLの実行計画を取得する方法

繰り返し実行するマスタ系の参照SQLをチューニングする方法

通常のSQLと同様に、SQLをチューニングする方法やインデックスを使う方法も効果的です。
>>SELECT文のSQLチューニング方法まとめ
>>SLECT文が遅いときのインデックス作成によるチューニング方法

上記のようなチューニングを行うことでより効率よくデータにアクセスし、レスポンスの改善が図れます。

ただ、繰り返し実行するのであれば、もっと速くする方法があります。
例えば、常にキャッシュに格納しておく方法です。

バッファキャッシュにKEEPする方法

通常、SQLを実行して読み込んだデータは、バッファキャッシュ上に格納されます。
そして繰り返し呼び出されるものは、キャッシュ上に残ります。呼び出されないものはキャッシュから出ていきます。

ただ、実はテーブルのキャッシュ属性をKEEPに変えることで、常にキャッシュに格納させておくことが出来ます。
キャッシュ属性に変更する方法は次の通りです。

・テーブル属性の変更
ALTER TABLE tab1 BUFFER_POOL KEEP
※デフォルトに戻す場合は、ALTER TABLE tab1 BUFFER_POOL DEFAULT

テーブルの属性を変えるのと同時に、バッファキャッシュ領域内にKEEPバッファキャッシュ用の領域を確保しておく必要があります。次のようなSQLで領域を確保できます。

・KEEPバッファキャッシュの指定
alter system db_keep_cache_size 5G

こうすることで、例えば、オンライン開始前に、特定のテーブルをSELECTしておけば、オンライン開始直後から常にデータがキャッシュに格納されることになり、高速にマスタデータにアクセスすることが出来ます。

ただし、バッファキャッシュの領域を使うので、きちんとDBAと相談して決めて下さい。

それから、WEBサーバーやバッチサーバの他のキャッシュ機能が使える状況であれば、アプリの要件や環境に合わせて使いやすい方を使ってください。

最後に

最後までお読みいただきありがとうございます。

SQLのチューニング方法は↓で紹介していますので参考にしてください。
>>SELECT文のSQLチューニング方法まとめ