数据库负载高故障排查处理

数据库负载高故障排查处理:
问题描述:查看数据库负载高达20左右,大量进程占用cpu较高
问题分析:多个单进程占用cpu较高,一般为索引失效,sql复杂查询数据量大或存在锁行,锁表等
,分析数据库dwr报告:
发现大量的行级锁,已经锁等待占用cpu较高,查询数据库锁:select t2.username,t2.sid,t2.serial#,t2.logon_time,event
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time desc
发现大量的行级锁
查询锁的进程对应的SQL语句为:
select /*+ ORDERED*/
 sql_text
  from v$sqltext a
 where (a.hash_value, a.address) in
       (select DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
               DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
          from v$session b
         where b.sid='897')
查出结果为:
数据库某块逻辑存在大量行级锁
行级锁导致原因大致分为以下几种:
1、不同的session同时更新或删除同一个记录
2、表上存在主键或唯一索引,会话1插入一个值(未提交),会话2同时或随后也插入同样的值
3、更新位图索引的一个键值,会指向多行记录,所以更新一行就会把该键值指向的所有行锁定
经排查为第一种情况导致,深入分析为恒通宜信网关多条数据返回同一个sendid,大并发情况下,更新同一行记录,导致行级锁引发的数据库负载剧增
问题处理:
避免多线程同时操作同一行记录即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值