我读过有关 SQL Server 缓冲区缓存以及使用最大和最小内存设置对其进行调整的各种讨论。但我有一个疑问:操作系统也有一个磁盘读取缓存。如果我使用的最大内存远低于可用的操作系统内存,操作系统是否会缓存磁盘页面并使其下一次检索更快?
答案1
从此知识库:
SQL Server 使用 FILE_FLAG_NO_BUFFERING == true 打开数据库文件。某些实用程序和服务(例如 Analysis Services)使用 FILE_FLAG_NO_BUFFERING == false。
换句话说,SQL Server(引擎)禁用操作系统磁盘缓存,因此降低 SQL Server 使用的内存量将为操作系统留下更多可用内存,而不会用于 Windows 缓存。SQL Server 的缓冲区缓存比 Windows 磁盘读取缓存更复杂,更适合缓存 SQL Server 数据。