内存属性

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Analysis Services 可在启动时预分配适量内存,以便可以立即处理请求。 可随着查询和处理工作负荷增加而分配更多内存。 通过指定配置设置,可以控制释放内存时的阈值。

注意

QueryMemoryLimit 是唯一适用于 Power BI 的 Memory 属性。

默认内存配置

在默认配置下,每个实例在启动时分配少量的 RAM (40 MB 到 50 MB) ,即使实例处于空闲状态也是如此。 配置设置按实例进行。 如果在同一硬件上运行多个实例(例如表格和多维实例),则每个实例将独立于其他实例分配自己的内存。

设置 说明
LowMemoryLimit 对于多维实例,这是阈值下限,达到该阈值时,服务器首先开始释放分配给不常使用的对象的内存。
VertiPaqMemoryLimit 对于表格实例,这是阈值下限,达到该阈值时,服务器首先开始释放分配给不常使用的对象的内存。
TotalMemoryLimit 一个阈值上限,即 Analysis Services 开始更积极地释放内存,以便为正在执行的请求以及新的高优先级请求腾出空间。
HardMemoryLimit 这是另一个阈值,达到该阈值时,由于内存压力,Analysis Services 开始彻底拒绝请求。

属性

介于 1 和 100 之间的值表示 “物理总内存”“虚拟地址空间”的百分比(以二者中少者计)。 超过 100 的值表示内存限制(以字节为单位)。

DefaultPagesCountToReuse

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

HandleIA64AlignmentFaults

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

HardMemoryLimit

指定一个内存阈值,达到该阈值后实例会主动终止活动用户会话以减少内存的使用量。 所有终止的会话都将收到有关因内存压力而取消的错误。 默认值为零 (0),这意味着 HardMemoryLimit 将设置为 TotalMemoryLimit 和系统的物理总内存之间的中间值;如果系统的物理内存大于进程的虚拟地址空间,则改用虚拟地址空间来计算 HardMemoryLimit。 此值对于Azure Analysis Services不可配置。

HeapTypeForObjects

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。 以下是有效值:

设置 说明
-1 (默认)Automatic。 该引擎将决定具体使用哪一个。
0 Windows LFH 堆。
1 Analysis Services 槽分配器。
3 每个对象都有其自己的 Analysis Services 堆。
HighMemoryPrice

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

LowMemoryLimit

带符号 64 位双精度浮点数属性,用于定义 Analysis Services 开始释放低优先级对象的内存(例如不常使用的缓存)的第一个阈值。 一旦分配了内存,服务器便不会释放低于此限制的内存。 默认值为 65;这指示最低内存限制为物理内存或虚拟地址空间的 65%(以二者中少者计)。

MemoryHeapType

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。 SQL Server 2016 SP1 及更高版本的 Analysis Services 中的有效值如下所示:

设置 说明
-1 (默认)Automatic。 该引擎将决定具体使用哪一个。
1 Analysis Services HEAP。
2 Windows LFH。
5 混合分配器。 此分配器将 Windows LFH 用于 <= 16 KB 分配,将 AS 堆用于 >16 KB 分配。
6 Intel TBB 分配器。 在 SQL Server 2016 SP1(及更高版本)的 Analysis Services 中可用。
MidMemoryPrice

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

MinimumAllocatedMemory

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

PreAllocate

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

QueryMemoryLimit

仅适用于 Power BI、Azure Analysis Services 和 SQL Server 2019 及更高版本的 Analysis Services。 一个高级属性,用于控制查询期间可以使用多少内存。

在 SQL Server 2019 及更高版本的 Analysis Services 中,此设置仅适用于在查询处理期间创建中间 DAX 查询结果的内存假脱机。 它不适用于 MDX 查询。

在 Power BI、Azure Analysis Services、SQL Server 2022 及更高版本的 Analysis Services 中,如果启用了 ResourceTrackingEnabled功能属性,此设置不仅限于内存假脱机。 它仅适用于 DAX 和 MDX 查询在表格模式下使用的所有内存。

以百分比指定,最大为 100。 如果超过 100,则以字节为单位。 将值设置为 0 表示未指定任何限制。

对于Azure Analysis Services,默认值由计划确定。

计划 默认
D1 80
所有其他 20
SessionMemoryLimit

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

TotalMemoryLimit

定义一个阈值,当达到该阈值时,会导致服务器取消分配内存,以便为其他请求腾出空间。 达到此限制时,实例将通过关闭过期会话以及卸载未使用的计算从缓存中缓慢清除内存。 对于SQL Server Analysis Services,默认值为物理内存或虚拟地址空间的 80%,以较小者为准。 Azure Analysis Services的默认值基于你的计划,不可配置。 TotalMemoryLimit 必须始终小于 HardMemoryLimit

VertiPaqMemoryLimit

仅针对表格实例,如果允许对磁盘进行分页,此属性指定内存占用达到何种程度(表示为内存总量的百分比)才开始分页。 默认值为 60。 如果内存占用不超过 60%,则服务器不会分页到磁盘。 此属性依赖于 VertiPaqPagingPolicyProperty,该属性必须设置为 1 才能进行分页。

VertiPaqPagingPolicy

仅针对表格实例,指定服务器内存不足时的分页行为。 以下是有效值:

设置 说明
0 (Azure Analysis Services 的默认值,Power BI) 禁用分页。 如果内存不足,处理将失败,同时显示内存不足错误。 如果禁用分页,必须向服务帐户授予 Windows 特权。 有关说明 ,请参阅 (Analysis Services) 配置服务帐户
1 (默认SQL Server Analysis Services) 此属性允许使用操作系统页文件 (pagefile.sys) 对磁盘进行分页。

设置为 1 时,处理不大可能由于内存限制而失败,因为服务器将尝试使用指定的方法对磁盘进行分页。 设置 VertiPaqPagingPolicy 属性并不会确保内存错误永远不会发生。 在下列条件下仍然可能会发生内存不足错误:

  • 没有足够的内存来用于所有字典。 在处理过程中,服务器将锁定内存中每列的字典,所有这些字典一起不能超过 为 VertiPaqMemoryLimit 指定的值。

  • 没有足够的虚拟地址空间来容纳这个过程。

为了解决永久性的内存不足错误,您可以尝试重新设计模型以便减少需要处理的数据量,或者可以向计算机添加更多的物理内存。

VirtualMemoryLimit

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

WaitCountIfHighMemory

这是一项高级属性,除非有 Microsoft 技术支持的指导,否则不应更改此属性。

另请参阅

Analysis Services 中的服务器属性
确定 Analysis Services 实例的服务器模式