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

DB2 for Linux, UNIX, and Windows 的锁事件,第 1 部分: 分析 DB2 for Linux, UNIX, and Windows 中的锁等待情形

 2010-08-03 00:00:00 来源:WEB开发网   
核心提示: db2pd 报告 ID 为 2 的表空间中一个 ID 为 6 的表上有一个行锁存在锁等待情形,通过检查 SYSCAT.TABLES,DB2 for Linux, UNIX, and Windows 的锁事件,第 1 部分: 分析 DB2 for Linux, UNIX, and Windows

db2pd 报告 ID 为 2 的表空间中一个 ID 为 6 的表上有一个行锁存在锁等待情形。通过检查 SYSCAT.TABLES,DBA 断定表 EMPLOYEE 上的确存在锁等待。

清单 6. 确定锁等待情形所涉及的表

SELECT TABSCHEMA, TABNAME 
FROM SYSCAT.TABLES 
WHERE TBSPACEID = 2 AND TABLEID = 6 
 
TABSCHEMA                TABNAME 
-------------------------------------------------------------------------------- 
FECHNER                 EMPLOYEE 
 
 1 record(s) selected. 

对于事务 2(列 TranHdl),db2pd -locks 输出的 status 列(Sts)显示一个 “G”。G 代表 “granted”,意即事务句柄为 2 的事务拥有行锁。此外,列 Mode 表明,事务 2 持有的是一个 X 锁。等待的事务(列 Sts 中显示 “W”(“wait”)的事务)是句柄为 6 的事务。该事务正在与事务 2 请求同一个行上的 X 锁。通过查看 Owner 列(显示事务 2 是锁的所有者)和比较 Lockname(对于 db2pd -locks 中的两个条目是相同的),可以看到这一点。

接下来,DBA 将事务句柄映射到应用程序。这可以使用另一个 db2pd 选项 -transactions 来完成:

清单 7. 将事务句柄映射到应用程序

db2pd -db sample -transactions 
 
Database Partition 0 -- Database SAMPLE -- Active -- Up 3 days 08:34:47 
 
Transactions: 
Address  AppHandl [nod-index] TranHdl  Locks   State  Tflag   Tflag2 
0x05141880 30    [000-00030] 2     9     WRITE  0x00000000 0x00000 
0x05144880 34    [000-00034] 6     5     WRITE  0x00000000 0x00000 

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

Tags:DB for Linux

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