通过


内存属性

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

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

注释

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

默认内存配置

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

设置 Description
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支持的指导下,否则不应更改的高级属性。 有效值如下所示:

设置 Description
-1 (默认值)自动。 引擎将决定使用哪个引擎。
0 Windows LFH 堆。
1 Analysis Services 槽分配器。
3 每个对象都有自己的 Analysis Services 堆。
HighMemoryPrice

除非Microsoft支持的指导下,否则不应更改的高级属性。

LowMemoryLimit

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

MemoryHeapType

除非Microsoft支持的指导下,否则不应更改的高级属性。 SQL Server 2016 SP1 及更高版本中的有效值如下:

设置 Description
-1 (默认值)自动。 引擎将决定使用哪个引擎。
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 及更高版本中,如果启用了 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

对于表格实例,指定服务器内存不足时分页行为。 有效值如下所示:

设置 Description
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 实例的服务器模式