我有一个维护一些 ID 信息的服务器。每隔 15 分钟,就会运行一个外部应用程序以删除所有旧 ID、插入新 ID 并更新所有现有 ID。当这个过程运行时,我的 SQL 实例的页面错误飙升,内存猛增,但是这个过程在几分钟内就完成了。但是,SQL Server 似乎会将处理过程中使用的数据在内存中保留至少一个小时或更长时间,从而导致其他应用程序启动。我在 SQL 中将内存使用设置为动态(最小 256MB,最大 384MB),但它的虚拟大小仍在 600MB 范围内。
我有一个维护一些 ID 信息的服务器。每隔 15 分钟,就会运行一个外部应用程序以删除所有旧 ID、插入新 ID 并更新所有现有 ID。当这个过程运行时,我的 SQL 实例的页面错误飙升,内存猛增,但是这个过程在几分钟内就完成了。但是,SQL Server 似乎会将处理过程中使用的数据在内存中保留至少一个小时或更长时间,从而导致其他应用程序启动。我在 SQL 中将内存使用设置为动态(最小 256MB,最大 384MB),但它的虚拟大小仍在 600MB 范围内。
没有办法告诉 SQL Server 释放内存,但如果该内存真的不再使用,它会在任何其他应用程序向操作系统请求时立即释放;因此,如果 SQL Server 中的内存实际上已准备好被释放,应用程序不应“采取行动”,因为 SQL Server 会非常乐意在需要时立即释放它。
无论如何,对此您无能为力。立即释放内存的唯一选择是重新启动 SQL Server 服务。如果您确实认为需要这样做,请在您的应用程序完成更新数据库后立即重新启动服务。