WEB开发网
开发学院数据库DB2 分析 DB2 for Linux, UNIX, and Windows 中的锁等... 阅读

分析 DB2 for Linux, UNIX, and Windows 中的锁等待情形

 2008-10-07 16:16:32 来源:WEB开发网   
核心提示: 清单 6. 确定锁等待情形所涉及的表SELECT TABSCHEMA, TABNAMEFROM SYSCAT.TABLESWHERE TBSPACEID = 2 AND TABLEID = 6TABSCHEMA TABNAMEFECHNER EMPLOYEE1 record(s) sele

清单 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

这个 db2pd 调用的输出表明,事务 2(列 TranHdl)是由应用程序 30(列 AppHandl)执行的,而事务 6 是由应用程序 34 执行的。这两个事务都正在对数据库执行写更改(列 State = WRITE)。所以 DBA 现在知道,应用程序 30 正持有应用程序 34 所等待的锁。

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

Tags:分析 DB for

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