我正在研究增加多维数据集中的分区数量时处理时间的性能损失。我从http://technet.microsoft.com/en-us/library/ms365363.aspx意识到,理论上它可以达到 2+ 十亿,但我预计任何增加都会受到打击。有没有办法可以估计这一点(我意识到这是主题,我想我正在寻找一个公式)还是我必须证明它?
非常感谢,
萨拉
我正在研究增加多维数据集中的分区数量时处理时间的性能损失。我从http://technet.microsoft.com/en-us/library/ms365363.aspx意识到,理论上它可以达到 2+ 十亿,但我预计任何增加都会受到打击。有没有办法可以估计这一点(我意识到这是主题,我想我正在寻找一个公式)还是我必须证明它?
非常感谢,
萨拉
分区通常用于提高性能,而不是降低性能,但你是对的,如果你有太多,那么你会受到性能影响。看起来您想知道如何找出有多少分区太多。
我将假设您所说的处理时间是处理多维数据集的时间,而不是查询多维数据集的时间。
分区的一般概念是,在重新处理多维数据集时,您只需处理一小部分分区。这使它成为一个巨大的性能提升。如果您正在处理大量分区,则处理单个分区的开销变得不可忽略。发生这种情况的点可能取决于许多因素。与分区一起扩展的因素包括:
我认为这里最大的因素是您如何从数据源获取数据。如果您的源不能很好地支持分区,那么您的性能将非常糟糕。如果它得到很好的支持,例如它在关系数据库中具有所有必要的索引,那么您只会产生单个查询的开销。
所以我认为问这个问题更合适的方式不是多少分区太多,而是一个分区有多小太小?我会说如果一个分区中的事实数量只有几百个,那么你可能有太多的分区。您不太可能想要创建这么多分区。我认为引用的 20 亿只是为了向您保证您永远不会到达那里。
关于你是否应该有这么多分区,我认为你不应该。我认为你应该仔细分区,做几百个分区,根据数据是否经常变化来对数据进行分区。