次の方法で共有


キャッシュの有効時間

質問

2010年1月20日水曜日 6:14

Windows XP Proffesional SP3
MEM:2GB
SQL Server 2008 SP1

を使用しています。

2つの各500万件程度のテーブルを結合し
1つの5万件程度の結果を求めています。
1回目の実行時間に比べて2回目の実行時間が非常に短いのは
キャッシュに格納されヒットしている為だと思われますが、
5分後に2回目を実行すると1回目と同程度の時間が掛ります。

このキャッシュの有効時間は設定できるのでしょうか?

すべての返信 (2)

2010年1月21日木曜日 2:09 ✅回答済み

ご指導ありがとうございます。

時間管理ではなくメモリー不足により削除されるとの事ですので、
メモリー拡張を行った上で再度検証してみます。

ありがとうございました。


2010年1月20日水曜日 11:07

こんにちは、nagino です。

クエリを実行した場合にキャッシュする内容としては、とりあえず実行プランとデータを考えれば良いかと思います。

実行プランに関しては、下記の「プロシージャキャッシュからの実行プランの削除」にあるとおり、キャッシュ用のメモリがある限りキャッシュし続けます。

メモリが不足すればキャッシュは削除されます。

有効時間による管理はしていません。

http://technet.microsoft.com/ja-jp/library/ms181055.aspx

データに関しては、下記の「バッファ管理の仕組み」にあるとおり、他のデータを読み取るなどのためにバッファ領域が必要になるまではキャッシュし続けます。

メモリが不足すればキャッシュは削除されます。(変更がある場合は書き込みも行われます)

有効時間による管理はしていません。

http://technet.microsoft.com/ja-jp/library/aa337525.aspx

思ったようなパフォーマンスが出ない場合は、メモリ不足や設定の不備などが考えられますので(キャッシュの管理に介入しようとするのではなく)、原因の切り分けをして適切な対応をされるのがお勧めです。

MCITP(Database Developer/Database Administrator)