Triggers IBMDB29.7触发器的性能评测

Triggers IBMDB29.7触发器的性能评测,triggers,db2,Triggers,Db2,有没有一种简单的方法来评测DB29.7update/Insert/Delete触发器的性能?我有一种情况,当我使用一组参数执行触发器时,需要1s才能完成。当我用相同的参数第二次执行它时,执行时间下降到10毫秒。如果我使用其他参数执行相同的触发器,则再次需要1s。因此,显然存在一些缓存。然而,语句结构仍然是一样的,所以在我看来,它不需要从头构建任何东西 我现在需要分析触发器,以查看执行时间实际花费在哪里。这取决于触发器的作用。例如,如果使用一组参数,它只需要更新一行,但是如果使用另一组参数,它应该

有没有一种简单的方法来评测DB29.7update/Insert/Delete触发器的性能?我有一种情况,当我使用一组参数执行触发器时,需要1s才能完成。当我用相同的参数第二次执行它时,执行时间下降到10毫秒。如果我使用其他参数执行相同的触发器,则再次需要1s。因此,显然存在一些缓存。然而,语句结构仍然是一样的,所以在我看来,它不需要从头构建任何东西


我现在需要分析触发器,以查看执行时间实际花费在哪里。

这取决于触发器的作用。例如,如果使用一组参数,它只需要更新一行,但是如果使用另一组参数,它应该更新一百万行,那么性能就不一样了

触发器没有缓存,所有事务都直接写入事务日志。这就是您应该分析触发器中使用的查询的访问计划的原因。您还应该分析IO和其他相关元素,以发现不同集合中发生了什么

不要忘记更新统计信息,为什么不更新,对相关的表执行reorg


谢谢你的回答。触发器会将一组新行插入到 另一张桌子。在后续运行中,将触发相同数量的行 并补充道。这就是为什么我对第一个 跑步速度很慢,但下一次完全相同的跑步速度要快10倍

它与加载表格有关。DBMS的内存中通常不包含所有表(或表的所有数据)。数据库将数据存储在页面上。每页可以(并且应该)包含多行。当您添加一行时,它将被添加到一个表中,该表通常按表的主键排序(不完全确定是否应该一直在这里编写)。因此,根据要添加到表中的行,需要写入不同的页面。如果尚未加载,则需要先加载,这需要花费时间。下次需要编写类似的行时,很可能会将其放在同一页上

如果页面已满,则需要将其拆分,以确保新记录可以写入正确的位置。因此,根据数据的不同,数据库需要完成不同的工作。但是,在所有情况下,数据都需要立即持久化到数据库中。因此,您始终需要等待写入完成

正如你所看到的,可能涉及到一些现金交易。这对于数据库来说是正常的


至于你原来的问题,;请查看触发器的sql以了解访问路径。

感谢AngocA的回答。触发器将一组新行插入到另一个表中。在后续运行中,触发并添加相同数量的行。这就是为什么我对第一次运行的速度慢有点困惑,但是下一次完全相同的运行速度快了10倍。有没有图形界面?我知道DBA喜欢基于文本的工具,但我喜欢图形:)我们使用DBI软件进行监控和性能调整。但是,它是专有的。由于我不是DBA,我不熟悉监视触发器的细节。