statspackの使用例としてしばしば見かけるものの一つに、ライブラリキャッシュのヒット率がある。Oracleでは同一と見なされないSQLの書き方とかバインド変数の効果とかについての記述と共に記されることが多い。また、ヒット率はおおむねどの文献でも95%~99%以上を保ちましょう、と書かれている。 このエントリでは、あえてライブラリキャッシュにヒットしないSQLを流し続けたとき、何が起きるのかをstatspackレポートを通して確認してみる。やることとしては2つのプログラムの実行時間とstatspackレポートを比較する。1つは、SELECT文のWHEREをバインド変数にし、もう1つは、バインド変数を使わず毎回静的なSQLを実行させ続ける。 環境 DB CentOS-6.4-x86_64 Oracle Database Express Edition 11g Release 2 Java