我们有一个相当大的SSAS表格多维数据集,其中包含许多不同的表(其中一些表包含度量和维,等等)。有时,我们会遇到必须优化多维数据集分区(将它们分成较小的部分)或多维数据集结构的场景,以便在处理(每天)时不会消耗太多内存。有时我们不得不增加服务器的内存限制,以确保作业不会崩溃。我们的一名SQL Server顾问询问我们是否考虑过将脚本作业的处理模式更改为“默认”而不是“完全”(因为脚本中的每个表都在处理模式下都设置为“满”)。我说我没有考虑过,但是我担心的是,根据我的研究,默认值实际上不会更新数据,但实际上只会以某种方式更改表结构来补充数据。自从上次处理分区以来,我需要一种处理模式,该模式将只提取任何新行(并更新所有已更改的行)。是否有任何模式可以完成此任务,而不是完全处理(显然会擦除当前正在处理的分区并重建整个事物=内存密集型)?占用较少内存的东西仍然可以拉入新行并更新过时的行吗?
仅供参考,所有表均基于sql查询
答案 0 :(得分:0)
一个选项是在表模型中的表上执行过程数据,而不是完全处理。您可能还需要考虑在表中实现分区,以便利用SSAS并行处理这些表的能力。由于您的表已经基于SQL查询,因此您只需要修改查询中的过滤器即可使数据在多个分区之间保持一致。对表进行分区还可以使用Process Add增量更新分区,从而进行增量处理。寻找其他减少不必要内存的方法,例如删除未使用的列并在可能的情况下替换计算所得的列(了解成本计算所得的列here)也将有助于解决内存问题。