- クエリが最初にハードパースされる時はバインドピークが成功的に発生します。
- 以降該当クエリがフラッシュ、メモリPressure、DDLなどの理由でInvalidationされます。
- 次回に同一なクエリがまたハードパースされる時はバインドピークを修行しません。
ここで核心はクエリの情報全体が消えるのではなくて実行計画情報のみ消える場合です。SQL文章に当たるLCO(Library Cache Object)はヒープ0にメタ情報を、ヒープ6に実行計画情報を持っています。万一ヒープ6が消えて再びハードパースされる時はバインドピークが起こらない場合が時々発生すると言うのがこのバグが現れる方式です。
反面バインドピークを非活性化してもバインドピークが起こるバグもあります。
バインド変数を使用する同じSQL文章がたまに違う実行計画を作って困らせる場合が時々あったが、とてもその理由が分からない場合があります。こんなバグたちのためか疑われますね。
No comments:
Post a Comment