11.哪些表使用了最多的锁
锁是数据库中的常见问题,我们可以通过监控表的锁使用情况,以进一步确认出现锁
问题的原因。
监控表使用锁的情况的 SQL 如下。
select dbsname databanse, tabname,
sum(pf_rqlock) as locks,sum(pf_wtlock) as lockwaits,
sum(pf_deadlk) as deadlocks
from sysactptnhdr,systabnames
where systabnames.partnum = sysactptnhdr.partnum
--and pf_wtlock >=0 and pf_rqlock >=0
group by dbsname,tabname
order by lockwaits desc;
表使用锁情况的查询结果如下。
当数据库出现锁问题时,我们首先需要找到哪些表消耗了最多的锁资源,哪些表出现了锁等待和死锁的情况,从而可以进一步确定需要监控的对象和有针对性的优化,可以分析表的锁模式是页级锁还是行级锁,还需要监控访问表的 SQL 语句是否发生了顺序扫描和采用的隔离级别。