我有一台安装了 SQL Server 2017 的 64GiB Ubuntu 机器。memory.memorylimitmb
任何高于 63695 兆字节的设置都将被忽略。将其设置为 67000 MB(大致为 62.3 GiB)仍会导致 SSMS 报告 63695 MB 可用(右键单击服务器,属性 - 常规 - 内存行)。较低的设置反映在那里就好了。
这导致 SQL Server 没有使用所有可用内存,它只使用 59.2,留下超过 4 个演出空。
同样,这是我的“mssql.conf”:
[memory]
memorylimitmb = 67000
但这是 SSMS 报告的内存量:
(注意:这不是“最大内存”设置,这是 SSMS 在“服务器 - 属性 - 常规 - 内存”下简单说明机器上安装了多少内存的地方)
这是 Linux 显示可用内存的方式。例如,以下面的 Azure 虚拟机为例:
如果您查看报告的服务器可用内存(使用上面作为示例服务器),您将看到报告的数量 16010。所有 SQL Server 所做的只是报告操作系统所说的内容,在这种情况下,即使您将值更改为更大的数字(超过 16 GB)SQL Server 无法执行任何操作,因为这不是操作系统报告的内容(.
SQL Server 调用操作系统来询问它所看到的内容,因此只镜像它所显示的内容(当 for 的值
memorylimitmb
设置为等于服务器内存时)。请注意,您在 SSMS 中看到了这一点,它只是从 SQL Server DMV 中获取值。