0

我正在使用主数据服务(SQLServer2016 企业版)从不同部门收集数据,因此每个组将具有一个或多个具有更新访问权限的属性组。为了指示循环完成,将属性“循环状态”设置为值“是”。由于许多业务规则和多个属性组,性能变得非常缓慢,所以我在想的是:1.将所有已完成周期的记录转移到一个表中,然后 2.从 Master Data Service 中删除这些记录,但这不会从表(Point_1)中删除它们。有什么线索怎么做吗?,我知道在 MDS 中有订阅视图,但不知道这是否适合我的情况?如何?

4

1 回答 1

0

艾克,

第一种方法:业务规则的条件评估

您可以查看向所有业务规则添加条件以仅评估业务规则

IF 循环状态 = “否”

这可能会减少您现在看到的性能影响(不确定)。这可以通过(在编辑业务规则屏幕中)来完成

条件 > 值比较 > 等于 > 选择属性:="循环状态" > 属性值/属性:= "否"

这样您就不必移动数据。

第二种方法:将数据移动到另一个(物理)表

  • 这种方法需要您在同一个 MDS DB 或另一个 DB 中创建一个单独的表(物理 DB 表,不是实体,以避免 MDS 开销)。
  • 然后创建一个 SP,将 Cycle Status = "yes" 的行插入到第二个表中并在 MDS 实体中将它们标记为已删除。
  • 您可能希望创建一个 SQL 代理作业,该作业可以安排为以您喜欢的任何频率(每天、每周……等)运行此 SP。
  • 这种方法的挑战在于您的用户将不再能够轻松访问此存档数据。

另一种替代方法...

将创建一个单独的 MDS 模型 - “存档”。在那里创建一个类似的实体(如镜像),而不是将已关闭的记录移动到 Db 表中,而是将它们添加到存档模型中的镜像实体中。您可能希望为所有用户授予对该新实体的只读访问权限。

于 2018-03-16T21:38:39.113 回答