监控 DB2 活动之捕获事件监控数据(4)

http://www.itjxue.com  2015-08-21 22:26  来源:未知  点击次数: 

  事件监控器使用原则

  事件监控器应仅用于监控特定事件或简单工作负载。事件监控器设计用于提供能帮助诊断数据库/应用程序的问题或异常行为的特定信息。

  与快照不同,事件监控器对性能有极严重的影响。这是由各事件对象写出的信息导致的。此外,SQL 语句事件监控器对性能的影响更加严重,原因在于每次执行查询时给数据库引擎带来的所有那些额外的工作:DB2 Database Manager 不能简单地执行查询,还必须生成并记录与该查询相关的所有特征以及运行时信息。若此类信息要写入文本文件,则执行速度会更慢。

  至于文件,在创建将数据写入文件的事件监控器时,限制文件大小是个好办法,这样可以控制事件监控器输出占用的磁盘空间。否则,若您正在监控一个大容量的 OLTP 系统,输出将很快发展为数百兆字节。

  事件监控器最常见的用途之一就是捕获死锁信息。(死锁事件监控器不会写出大量数据,并且触发得不是那么频繁,因此在使用这种监控器时,不设置文件大小限制是可以接受的。)如果不使用事件监控器,想准确确定死锁循环中涉及到哪些锁和应用程序几乎是不可能的。死锁事件监控器将在死锁循环发生时,收集所有应用程序及其锁的相关信息。借助于这些信息,即可准确监控到导致死锁循环的那条 SQL 语句,也可更改此语句以补救这一问题。不要忘记,DB2 标记为导致死锁的原因的应用程序就是死锁循环中包含的最后一个应用程序 —— 而导致死锁的实际原因很有可能是更早时由另一应用程序启动的事务。务必确保检查涉及到的所有锁和应用程序,从而正确地确定出问题的根源。

  事件监控器的常见用途之二就是跟踪 SQL 语句处理。SQL 语句事件监控器非常有用,因为它可捕获动态和静态 SQL 语句。若应用程序利用了无法用 SQL 快照捕获的预编译 SQL 语句,那么这种特性非常关键。在使用事件监控器捕获关于执行的每一条 SQL 语句的信息时,各语句的属性(例如读取、选择、删除的行数等)将被记录下来,若捕获了快照,则这些内容不会作为整体的一部分展示出来。此外,由于执行时间桢和启动与停止时间也被记录下来,对于事务、一个应用程序执行的 SQL 将怎样影响其他应用程序的 SQL 执行的详细分析即可进行。但由于所生成的信息容量以及运行 SQL 语句监控器带来的性能开销,此类监控应仅用于短期测试或问题判断,不应该用于实际生产环境中。

(责任编辑:IT教学网)

更多

推荐数据库文章