DB2会话之间锁问题排查
现象
【DB2会话之间锁问题排查】代码执行到update语句时卡住了,不再往下执行(没有任何日志的输出)
思路
- 定位数据库指定表的锁信息
- 定位锁等待的两个或多个会话
- 定位不同会话执行的最后SQLID
- 定位SQLID对应的具体SQL
- 进入linux用户,并登陆db2
db2 connect to 数据库名称 user 用户名 using 密码 或 db2 connect to 数据库名称 user 用户名(enter后再输入密码)
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/b9342f7335b5485bb1f199f182e331f3.jpg)
文章图片
image.png
- 定位数据库指定表的锁信息
db2top -d 数据库名称
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/99a6b6ea37964978a1571613c00ef1d6.jpg)
文章图片
image.png enter之后出现下图:
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/99ec8fa09e6e4691ab88c65ae8c3f308.jpg)
文章图片
image.png 输入U,显示所有锁信息如下图:
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/2a8f45452f124f6e88d936030d0a75c9.jpg)
文章图片
image.png
- 定位锁等待的两个或多个会话
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/ce84b47ff2c844319ad74f33197f1417.jpg)
文章图片
image.png
“ A -> B ” 表示B等待A会话释放资源
- 定位不同会话执行的最后SQLID
db2pd -d 数据库名称 -applications |grep -i 会话标识
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/ef1d0ca48dc74dabae629037c742b72a.jpg)
文章图片
image.png
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/5f39b9c3365a4e5892682fc698deda61.jpg)
文章图片
image.png
- 定位SQLID对应的具体SQL
db2pd -d 数据库名称 -dynamic |grep -i SQL标识
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/39a1e24f901f469eb251319e0ffed911.jpg)
文章图片
image.png
![DB2会话之间锁问题排查](https://img.it610.com/image/info10/f88c8a999df54be2991b72e1220ac476.jpg)
文章图片
image.png 结论:会话50401中最后执行的SQL(563)(update)在等会话50367提交事务
推荐阅读
- 闲杂“细雨”
- 对手戏
- 吸引力,一种奖赏
- cocosbcx白皮书解读(一)|cocosbcx白皮书解读(一)| 区块链如何统一开发者、发行商、用户之间的利益
- 这个世界哪有那么多的美好,全他妈都是人与人之间的尔虞我诈
- 异性之间,女人期待你主动追求,她会有三种小动作
- 《一念之间》
- 浏览器标准模式和怪异模式之间的区别是什么?
- 在福德与开悟之间,还藏着一个公开的大秘密……
- 人与人之间的等价交换