如果未启用内存中的锁定页面并且 SQL Server 数据被调出到页面文件,SQL Server 是否会决定哪些数据被调出?或者这是由操作系统处理的?
如果 Windows 正在处理这个问题,它会告诉 SQL Server 哪些数据已被调出吗?据我了解,SQL Server 知道 RAM 中有多少数据以及页面文件中有多少数据。但是 SQL Server 是否知道将哪些数据页放在哪里,它是否对数据页放在其中一个或另一个有任何影响?
这是一些背景:
我并不是真的想解决这样的问题。
我的问题更多是关于了解 SQL Server 内部发生了什么......
我遇到了一个应用程序的问题,该应用程序有很长的作业/查询队列,等待 SQL Server 实例处理请求超时。我注意到有问题的数据库上的两个 SELECT 查询短暂地阻塞了一个 UPDATE 和一个 DELETE 查询。不久之后,两个新的 SELECT 阻塞了两个新的 UPDATE 和 DELETE 查询。这继续。
SQL Server 按预期工作 - 只是对于遇到超时的应用程序来说太慢了。
SQL Server 实例位于具有 14 个其他 SQL Server 实例的主动/被动群集上。
我与应用程序开发人员一起解决了这个问题。我们讨论了为实例分配更多 RAM,虽然我并不真正认为这会帮助我将最大服务器内存 (MB) 设置从 40GB 提高到 55GB。在几秒钟内,所有作业在执行的应用程序服务器上排队等待——开发人员正在看着它们非常迅速地从队列中被删除。
托管 SQL Server 的服务器当时没有设置为允许服务帐户在内存中锁定页面,所以我在想,如果处理提到的请求所需的数据放在页面文件中,以及何时分配额外的 RAM数据从页面文件移动到 RAM 也许这可以解释为什么所有作业在分配额外的 RAM 后立即完成得如此之快。
sql-server ×1