3
在缓冲区缓存中没有足够空间的情况下,SQL Server如何处理查询的数据?
我的问题是,SQL Server如何处理需要将比可用空间更多的数据拉入缓冲区缓存的查询?该查询将包含多个联接,因此结果集在磁盘上已经不存在该格式的结果,因此需要编译结果。但是即使在编译之后,它仍然需要比缓冲区高速缓存中可用空间更多的空间。 我举一个例子。假设您有一个SQL Server实例,总共有6GB的可用缓冲区高速缓存空间。我运行具有多个联接的查询,该联接读取7GB数据,SQL Server如何响应此请求?是否将数据临时存储在tempdb中?它会失败吗?它是否仅执行一次从磁盘读取数据并一次编译段的操作? 此外,如果我尝试返回7GB的总数据会发生什么,这是否会改变SQL Server的处理方式? 我已经知道解决此问题的几种方法,我很好奇SQL Server在按要求运行时如何在内部处理此请求。 另外,我确定此信息存在于某处,但我一直没有找到它。