当社のアプリケーションには、非常に大きなワイドなトランザクションデータテーブルがあります。このテーブルに対して実行されたSELECTクエリの90%に使用される "コア"カバードインデックスがあります。このインデックスがバッファプール(データキャッシュ)に残っていると、アプリケーションは非常にうまく機能します。他のデータページがインデックスのページをデータキャッシュから押し出すと、アプリケーションの速度が大幅に低下します。バッファープール(データキャッシュ)にカバードインデックスをプリロードするにはどうすればよいですか?
私の挑戦は:トランザクションデータを管理する一晩のバッチ処理があります。彼らは日中のアプリケーションとは異なる方法でテーブル上で作業します。私はバッチプロセスをより速く実行するのに役立つ追加のカバードインデックスを作成できます。しかし、「コア」のカバーされたインデックスは、追加のカバーされたインデックスが展開されたときにキャッシュから脱落することがわかりました。
翌日のバッチ処理の開始時と終了時に、追加のカバードインデックスを作成して削除する予定です。
バッチプロセスの終了時に、「コア」のカバーされたインデックスをバッファプール(データキャッシュ)にプルすることができれば、さらに良いことになります。
私は「ピンテーブル」などを使用したくありません。バッチ処理の最後に「コア」のカバーされたインデックスのすべてのページを読み込み、その日が始まると「コア」のインデックスがすでにメモリに格納されているようにします。