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