【问题标题】:SSAS Tabular in memory compression内存压缩中的 SSAS 表格
【发布时间】:2020-09-17 11:49:47
【问题描述】:

我正在我现有的数据仓库上测试 SSAS 表格。我读到内存中的数据压缩将非常棒,最多可压缩 10 倍。仓库重量约为 600MB,分析模型有大约 60 个度量(主要是行数和基本计算)。在 sql server management studio 中,我检查了分析数据库的估计大小:~1000MB。不是我所期望的(希望最多 100MB)。

我使用简单的资源监视器检查 msmdsrv.exe 进程的内存使用情况。令我惊讶的是,在完全处理完数据库后,msmdsrv 进程的内存消耗从 200MB 跃升至 1600MB。我部署了连接到相同源的相同模型的第二个实例,它增长到超过 2500MB。所以估计的大小实际上是正确的。

数据仓库很典型——星型模式、事实和维度,没什么花哨的。

为什么没有以任何方式压缩数据?怎么可能比未压缩的源仓库占用更多的内存?

我将非常感谢有关这个谜团的任何提示 :)

【问题讨论】:

    标签: ssas ssas-tabular


    【解决方案1】:

    您应该阅读和观看 Marco Russo 有关 Vertipaq 分析仪的资料。您可以找到模型的哪一部分占用了您的大部分内存。

    https://www.sqlbi.com/articles/data-model-size-with-vertipaq-analyzer/ https://www.sqlbi.com/tv/checking-model-size-using-vertipaq-analyzer-in-dax-studio/

    也许这能给你一些启发: https://www.microsoftpressstore.com/articles/article.aspx?p=2449192&seqNum=3

    表格模型基于列存储,这意味着如果您在列中有许多唯一值,那么您将获得较低的压缩率(例如,增量 ID 列,如 transactionID)。
    -> 尽可能省略高基数列 -> 尽可能尝试拆分列 如果您有 DateTime 列,则应将它们拆分为两部分(日期和时间)。然后你有更多重复的价值 -> 分区中数据的排序顺序可能会影响压缩率 [运行长度编码 (RLE)] -> 使用度量(不占用空间)而不是计算列(占用)

    Run Length Encoding (RLE)

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多