在数据源视图或数据库中定义关系是否更好?

Son*_*nam 2 ssas

我正在尝试组合几个多维数据集来创建一个多维数据集,并且在数据源视图中定义了许多关系.现在想要定义数据库级别的关系.我试图从性能的角度来理解这种变化.

Fra*_*kPl 5

在DSV关系没有影响性能.它们有两个目的:

  • 关于表结构的文档,以及
  • 帮助BIDS中的一些向导生成一些代码.

后者是例如以下情况的情况:多维数据集向导可以建议哪些表是事实表,因此将是度量组的基础,哪些是维度表.此外,多维数据集设计器选项卡"维度用法"中的关系是基于DSV关系生成的,您无需手动定义它们.维度的关键属性在维度设计器中自动定义为基于主键列的属性.

关系数据库中的关系可能会对写入表有负面的性能影响,因为每次插入,删除和更新都需要检查它们,这会影响具有这些约束的列.

根据数据库系统的不同,它们会隐式地创建一些索引,这可能会在某些读取操作中提供性能改进.但Analysis Services在处理过程中发布的大多数语句都不会受益.

但是,这些关系可能会对开发人员/调试性能产生积极的"性能影响",因为它们会在数据发生更改时提供早期错误消息,从而违反约束条件.另一方面,您必须在它们指定删除/插入的顺序时处理它们:在引用表中的记录之前从引用表中删除值,以相反的顺序插入.