分析DB2数据库中常见的堵塞问题与处理方法

当数据库发生故障时,如何快速定位问题并找到解决方案。特别是在非常重要的系统的运行和维护中,解决问题和恢复服务是分秒必争。DB2作为广泛使用的商业数据库,内部提供了许多方法和诊断工具来协助分析问题。但是,当问题确实发生时,数据库管理员仍然会很着急,不知道从哪里开始下手。如果在分析方向上发生错误,则会浪费更多的时间,并且无法及时解决问题。 甚至可能导致严重的后果。因此找出DB2数据库拥塞的原因才是问题的关键。DB2数据库中常见的堵塞问题有哪些?如何处理?

分析DB2数据库中常见的堵塞问题与处理方法_业界动态_行业云

 DB2数据库常见堵塞问题

DB2数据库发生性能缓慢或者堵塞的最常见现象是数据库活动会话激增,数据库相关命令和语句运行缓慢。导致性能缓慢的原因有很多,最常见的可能是出现锁问题。一个长sql堵塞其他相关sql,导致短时间并发sql变多,系统变慢。也有可能是出现了大sql,耗尽系统资源等。如下图所示,我归纳列举了一些常见的堵塞原因,整理了相关问题解决的方法。

分析DB2数据库中常见的堵塞问题与处理方法_业界动态_行业云

图中所列的这些问题都可以通过DB2pd工具获取信息来分析。我也在一键检查分析工具里面包含了这些场景。

 锁链分析和处理

DB2的锁机制与其他数据库差异很大,锁问题也是在数据库运维中重点关注的对象。锁是用来控制事务的一致性和并发性的。DB2的隔离级别和其他数据库差不多,都是解决脏读,幻读,不可重复读等问题。然而不同于其他数据库,DB2的锁是存放在内存里的。数据库的locklist参数控制这个内存的大小。如果出现某个实务需要加的锁特别多,可能会导致这个内存里放不下,触发锁升级。锁升级更容易引起堵塞。

 发现锁堵塞

一个正常运行的数据库突然出现锁问题通常有两种情况: 一种是运行了不常运行的SQL 事务,堵塞了正常的交易。一种是正常的交易事务突然性能有问题,例如查询计划改变。不管是哪种情况,最紧要的是将源头找出来DB2top工具有一个非常好用的功能,就是查看锁链的信息。

 清单1.DB2top查看锁链

分析DB2数据库中常见的堵塞问题与处理方法_业界动态_行业云

在这个输出里面,1546 这个应用是锁的持有者,其他都是等待者。下一步就是分析1546在执行什么语句,是否需要杀,是否需要优化。

然而对于已经堵塞的DB2数据库,DB2top可能根本打不开。这个时候就需要DB2pd工具来查看锁等待的信息。

 清单2. DB2pd 查看锁等待

分析DB2数据库中常见的堵塞问题与处理方法_业界动态_行业云

在这个 DB2pd 的输出里面,第八列 Sts 就是持有者(G)和等待者(W)。第四列 lockname 是对应的锁。需要综合这两个信息,才能知道应用的等待关系。这里分析锁等待关系并不是非常直观。所以我在开发的工具里结合 lockname 和锁状态信息组织出锁链关系,然后展示出来。

 分析锁问题

基于上述信息,找到锁的持有者源头,现在还需要知道持有者在运行什么语句。这个可以通过DB2pd 的application选项和dynamic选项综合分析出当前正在执行和上次执行的语句。

 清单3. DB2pd 查看application

分析DB2数据库中常见的堵塞问题与处理方法_业界动态_行业云

在DB2pd 工具的 application 输出里面,C-AnchID和C-StmtUID结合起来指向当前正在运行的语句。L-AnchID和L-StmtUID结合起来指向上一次执行的语句。要获得详细的语句,需要从dynamic cache里找到。图中C-AnchID和C-StmtUID都是0,也就是当前应用没有执行任何语句。而L-AnchID和L-StmtUID是341和2,上一次执行的语句是可以获取到的。

小结:导致数据库堵塞的问题原因非常多,上述只是列举了其中一小部分,想了解更多DB2数据库的信息,请继续关注吧。

34
73
0
71

相关资讯

  1. 1、年度观察:2016,正在远去的消费互联网时代1518
  2. 2、社交产品初探——从何谓社交说开去3493
  3. 3、互联网金融入行辅导|第三期:第三方支付2630
  4. 4、作为管理,如何带领团队配合公司的变化?4495
  5. 5、群魔乱舞的双11和各类第1,你到底要糊弄谁?4303
  6. 6、刚入职的实习生,在社群运营上做了些什么事?4132
  7. 7、零工经济,一种完美的经济形态?2631
  8. 8、生鲜电商的核心业务——基于业务架构视图4385
  9. 9、汽车行业营销领域数字化平台(4):车企为什么要做数字化营销平台?4842
  10. 10、视频时代,文字创作者求生指南4303
全部评论(0)
我也有话说
0
收藏
点赞
顶部