为什么 SQL Server Standard 2017 使用的内存多于文档中描述的限制?

Ale*_*kov 6 sql-server memory sql-server-2017

文档说:

例如:SQL Server 标准版的缓冲池内存限制为 128GB,因此缓冲池中缓存的数据和索引页限制为 128GB。从 SQL Server 2016 SP1 开始,您可以为每个实例的列存储段缓存提供额外的 32GB 内存,并为每个数据库的内存中 OLTP 提供额外的 32GB 内存配额。此外,如果最大服务器内存没有上限,SQL Server 中的其他内存使用者可能会消耗内存,这将受到“最大服务器内存”或服务器上的总内存的限制。

我们正在使用列存储,因此我预计 SQL Server 将受到使用 128+32 Gb 内存的限制。不使用内存优化表。

但实际上超过 215 Gb 用于缓冲池: 在此处输入图片说明

内存文员 在此处输入图片说明

整个 sql 过程大约需要 300Gb。 在此处输入图片说明

从 sys.dm_os_process_memory 中选择 *

在此处输入图片说明

最大内存设置为 360Gb。服务器有380Gb。

我错过了什么?

版本:

Microsoft SQL Server 2017 (RTM-CU14) (KB4484710) - 14.0.3076.1 (X64)
2019 年 3 月 12 日 19:29:19 版权所有 (C) 2017 Microsoft Corporation Standard Edition(64 位),Windows Server 2016 Standard 10.0(Build 10.03) :)(管理程序)

更新 (2019-04-26) 有趣的是 - MEMORYCLERK_SQLBUFFERPOOL 由两条记录呈现。第 3 行正是我希望在标准版中看到的。但是第一行是什么?服务器有 2 个处理器,总共 48 个内核。 缓冲池

Sha*_*nky 2

我相信您错过了文档。请参阅下图中突出显示的点

在此输入图像描述

内存优化表使用的内存为每个数据库 32 GB

假设您拥有 SQL Server 标准版,其中包含列存储索引并在3 个数据库中拥有内存优化表。

使用的最大内存可以是

128+32+(3*32)=256GB。

让我知道您有多少数据库正在使用内存优化表?128 GB 限制仅适用于缓冲池

  • 他们只提到使用列存储。如果他们有大量内存中 OLTP 数据,它会在内存职员中显示为“MEMORYCLERK_XTP”(这不在他们的前 10 个职员输出中)。 (3认同)