3
SQL Serverは、バッファキャッシュに十分なスペースがないクエリのデータをどのように処理しますか?
私の質問は、SQL Serverが、利用可能な領域よりも多くのデータをバッファキャッシュにプルする必要があるクエリをどのように処理するかです。このクエリには複数の結合が含まれているため、結果セットはこのフォーマットですでにディスク上に存在せず、結果をコンパイルする必要があります。ただし、コンパイル後でも、バッファキャッシュで使用可能な領域よりも多くの領域が必要です。 例を挙げましょう。合計6GBの利用可能なバッファキャッシュスペースを持つSQL Serverインスタンスがあるとします。7GBのデータを読み取る複数の結合を使用してクエリを実行しますが、SQL Serverはこの要求にどのように応答できますか?tempdbにデータを一時的に保存しますか?失敗しますか?ディスクからデータを読み取り、一度にセグメントをコンパイルするだけですか? さらに、7GBの合計データを返そうとするとどうなりますか?SQL Serverがデータを処理する方法は変わりますか? 私はこれに対処するいくつかの方法をすでに知っていますが、SQL Serverがこのように実行されたときに、SQL Serverがこの要求を内部的に処理する方法に興味があります。 また、この情報はどこかにあると思いますが、見つけるのに失敗しました。