WEB开发网
开发学院数据库DB2 DB2 for Linux, UNIX, and Windows 的锁事件,第 ... 阅读

DB2 for Linux, UNIX, and Windows 的锁事件,第 3 部分: 使用 DB2 9.7 中的锁事件监控器来解决并发性问题

 2010-08-03 00:00:00 来源:WEB开发网   
核心提示: 输出包含所有用来确定锁超时事件原因的信息,包括: 参与锁超时事件的应用程序通用信息,DB2 for Linux, UNIX, and Windows 的锁事件,第 3 部分: 使用 DB2 9.7 中的锁事件监控器来解决并发性问题(6),如应用程序名、认证 ID 等等,等待应用程序请求的锁信息,

输出包含所有用来确定锁超时事件原因的信息,包括:

参与锁超时事件的应用程序通用信息,如应用程序名、认证 ID 等等。

等待应用程序请求的锁信息,如行或表锁、共享或独占锁、表名等等。

阻塞的 SQL 语句信息。

在参与事务中的锁超时事件前执行的所有 SQL 语句信息,如语句文本、使用的隔离级、执行顺序等等。

事件监控器不止收集参与事务中最后执行的 SQL 语句。这有助于锁分析,因为这些语句可能不是并发问题的原因。例如,不是 SELECT 语句造成产生问题的锁,但 UPDATE 语句恰好在同一事务中在 SELECT 语句前执行。只有在指定 ALTER WORKLOAD...COLLECT LOCK TIMEOUT DATA 语句的 WITH HISTORY 选项后才收集之前 SQL 语句的信息。

确定引起锁超时事件的原因后,停止收集默认工作负载的锁超时信息,如清单 13 所示。

清单 13. 停止默认用户工作负载的锁超时数据收集

db2 "ALTER WORKLOAD SYSDEFAULTUSERWORKLOAD COLLECT LOCK TIMEOUT DATA NONE" 

为了准备下一个示例场景,将 DB CFG 参数 LOCKTIMEOUT 重新设置为 -1,这意味着锁超时不再发生,因为一个事务可以无限等待另一个事务释放所需的锁。由于 LOCKTIMEOUT 参数不可在线调整,需要停用并重新激活数据库,以使更改起作用,如清单 14 所示。

清单 14. 重置数据库 LOCKTIMEOUT 设置

db2 "TERMINATE" 
db2 "DEACTIVATE DB SAMPLE" 
db2 "UPDATE DB CFG FOR SAMPLE USING LOCKTIMEOUT -1" 
db2 "ACTIVATE DB SAMPLE" 

收集整个数据库的死锁事件数据

可以设置锁事件监控器来收集某个工作负载或整个数据库的锁事件信息。前一个例子演示了如何收集单个工作负载的锁超时事件信息。本例中,将看一看如何配置锁事件监控器以让其收集整个数据库的死锁事件。无论收集的锁事件数据是何种级别(工作负载或数据库),只有当锁事件监控器激活时才收集锁事件数据。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:DB for Linux

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接