上一篇 | 下一篇

仓库填充过程的监控技术

发布: 2008-7-01 13:01 | 作者: admin | 来源: | 查看: 0次

仓库填充过程的监控技术

热 荐

【字体:小 大】

仓库填充过程的监控技术

作者:- 文章来源:- 点击数:1662 更新时间:2006-4-22

保存 WIP 的完整历史

主要思想是截获 WIP 中出现的任何更改,并将该信息保存在单独的名为 WIP_FULL_ARCHIVE 的表中。该表包含了下列信息的副本: 插入到 WIP 中的记录:即每次创建一个新版本时。 在 WIP 中更新的记录:即每次由于版本状态更改而更新版本记录时。 从 WIP 中删除的记录:通过其删除的特定状态和时间标记将已删除记录插入 WIP_FULL_ARCHIVE 中。

表 WIP_FULL_ARCHIVE 因而包含每个版本的完整历史 —— 从设置好 WIP 扩展过程之时开始。最初用 IWH.EDITION 表中当前现有的信息填充该表。初始化之后,将通过触发器机制继续一点点地将数据从 IWH.EDITION 表添入档案表中: IWH.EDITION 表上的 after-update 触发器会将 IWH.EDITION 表中所更新的每一行复制到档案表中;其结果是向目标表插入一行,以记录每个版本的状态发生的每次更改。为 IWH.EDITION 表中每个版本插入的第一行记录的 status 值为“start”;但这一行不是通过该触发器捕获的,因为它是由插入操作产生的。 IWH.EDITION 表上的 after-delete 触发器将获取从 IWH.EDITION 表删除的每一行,并且用一个由减号开头的 status 值和一个指示了删除日期及时刻的时间标志向档案表插入一行。

IWH.EDITION 表上的 after-insert 触发器并非很有用,因为它只能截获其 status 值为 start 的记录行。而这些行不含任何有用值,这些有用值只能在描述同一版本的其他行中找到。但其描述机制确保了将数据连续地从 IWH.EDITION 复制到 WIP_FULL_ARCHIVE 表,并且提供了每个版本整个生存期的全部历史记录。我们测试后发现触发器对于性能的影响极其微小。由于档案表的内容持续增长,而且如果频繁填充仓库,其增长速度可能会相当快,所以我们需要通过定期删除档案表中数据的方式来改进该方法。这将在后面的小节中进行描述。

挖掘包含 WIP 完整历史的表中的数据

我们定义了 3 个步骤,用以从记录了 WIP 完整历史的表中筛选数据并且计算出一些重要信息,这是一些关于已执行完毕的步骤、各步骤的中间状态以及各步骤调度的信息。而其输出就保存在下列表中:

表 STEPS_COMPLETED(图 2)保存了每个版本的有关信息,这些版本可以是已经成功完成的,是已经失败的,或是以返回警告代码而结束的。该表包含了在 WIP 中显示的所有字段;WIP 中为数值型代码值的字段值已被其显式值取代。其中还有一个表示执行时间的附加字段,这是通过将该步骤完成的时间减去填充该版本的起始时间而得出的。其时间间隔比该步骤从开始执行到结束所经过的时间要短一些。

图 2

该表中包含了无法在 WIP 中获得的信息: 一个步骤每次成功的执行记录;相比之下,WIP 最多只会包含一个步骤最后一次成功的执行记录。 一个步骤每次以失败或警告而终止的执行记录;与之相比,如果操作员决定清除该版本,那么 WIP 中可能已经删除了其中一些记录。 DURATION 字段:执行各步骤所经过的时间,无论失败与否。相比之下,WIP 只提供 SQL 类型步骤的成功版本的信息。

表 STEPS_TEMPSTATUS(图 3)保存每个版本的中间状态,而这些状态是在该版本的执行期间被记录的(canceling、canceled、retrying、purging、purged、interrupted)。该表不包含 start 或 populating 状态的有关记录;因为该信息可以从保存该版本的其他记录中导出。当然,我们无需记录一个成功完成的、失败的或以警告消息结束的版本的终结状态,因为 STEPS_COMPLETED 表中保存了该信息。STEPS_TEMPSTATUS 表还包含了将每个版本从 WIP 删除的有关记录,其中含有与删除相应的时间标记。

图 3

字号: | 推荐给好友

62/6<123456>

评分:0

我来说两句