我正在寻找从内存中卸载表格立方体以调整性能的选项。以下是我的用例。
版本:SSAS 2019
我们有 4 个表格立方体分布在 3 个 SSAS 主机上。每个立方体将以不同的时间表构建,选择循环法构建下一个立方体。 例如:cube1 在 DAY1 构建的用户的 Host1 中处于活动状态, DAY2 - cube1将在Host2后台搭建,完成后翻转给用户。 DAY3 - 遵循同样的模式
同样的情况适用于 cube2、3 和 4(所有 4 个都不会在同一主机中结束,它们遵循随机模式,因为构建时间表不同)
第三天 - Host3 的 cube1 面向用户,其余实例(Host1 和 Host2 中的 cube1)作为备份,如果 host3 实例中出现任何数据问题,我们将把前一天的版本(Host2)翻转给用户。由于 Host1 和 Host2 中的 cube1 是故障转移版本(不常见),不想将 cube1 保留在 Host1 和 Host2 的内存中。
根据我在互联网上的浏览,看起来没有直接的方法可以通过运行任何进程选项来实现这一点。如果任何解释不清楚,请提出任何解决方法或让我知道,很乐意更新/澄清。
驱逐立方体对性能没有帮助。它将必须重新加载才能用于故障转移,如果您没有足够的内存就会失败。所以你不能真正使用你通过驱逐释放的内存。
但是您要查找的操作是SSAS Attach/Detatch。没有办法保持数据库附加但将其从内存中逐出,但重新加载它与附加相同。
SSMS 知道如何执行此操作并可以为您生成脚本。要分离表格数据库,请使用 TMSL 命令
{
"detach": {
"database": "AdventureWorksDW"
}
}
再次附加它,在文件系统中发现文件夹名称,然后运行 XMLA 命令
<Attach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Folder>C:\Program Files\Microsoft SQL Server\MSAS16.MSSQLSERVER\OLAP\Data\AdventureWorksDW.2.db</Folder>
<ReadWriteMode xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100">ReadWrite</ReadWriteMode>
</Attach>
请注意,Attach 是一项昂贵的操作,因为许多内存中的数据结构需要重建,因为只有原始数据存储在文件中。