网站首页 > 教程分享 正文
故障发生的经过
这也是之前的一个处理case, 事故发生在早上8点左右,业务高峰期,客户的沟通群里,消息几百条,各个厂商都在抱怨,系统无法使用。 登录到数据库服务器,第一时间看了负载不高,随即马上登录到数据库,查看当前的等待事件。 发现有大量的 行级锁等待:enq:Tx-row lock contention。 第一时间判定大概率研发SQL导致的,恢复业务you'xian立即批量 kill了造成锁的SQL会话,半个小时候后,同样的情况又出现,大量的行级锁,无奈之下,顶着压力,慢慢找问题,期间为了缓解业务使用,多次进行了kill 会话的操作。
处理问题的那段事件,第一时间判断是SQL问题,短时间内让研发看代码,然后修改并迭代, 这是不可能的。之前的经验出现过很多次,DBA和研发之间,互相推诿的情况屡见不鲜,研发更多的是希望从数据库层面,能优化掉就优化掉,最好不需要修改代码,而DBA往往是希望从代码角度进行优化,毕竟仅仅从数据库优化是有限的,而且有些代码明确的违反了数据库的设计原则,DBA也需要从原则上坚持其权威性。回到那次故障的处理过程中, 当时数据库频频需要kill会话来缓解业务,可想而知,当时的压力有多大,具有强大的心理素质是DBA的基本要求之一。
功夫不负有心人,在查看表结构的时候,发现有一张表,建立了位图索引,这是一个突破点,一般情况下,在高并发的OLTP的业务环境下,这是禁止使用的。 随即问了驻厂的实施工程师,发现这个索引是最近新建的。 OMG,确定了原因之后,立马删除了索引,情况有了明显改善。
故障分析
从下面的AWR报告来看,当时负载不高
连接数和会话数当前都只有700多。目前数据库设置的最大值可达到2000以上。
目前数据库的等待事件,主要的等待都花在了enq:Tx-row lock contention 行级锁等待。
当前的数据库会话信息
Oracle数据库,数据库一般不会出现insert之间互相阻塞,所以怀疑是不是有特殊类型,发现表OUTPAYMT列SUBMITFLAG创建了位图索引。
bitmap index与b-tree索引不同,bitmap index索引键值指向多行,因此当发生DML时,oracle会锁定索引包含的多行记录,Oracle官方解释位图索引是为数据仓库或环境设计,适用于
1.低基数,distinct值小于表的行数,越小越好,
2.只读表或不做DML操作,bitmap index不适用OLTP系统。
目前看这个表的列SUBMITFLAG 只存了两个值-1和0。
解决方案及建议
删除这个位图索引,改成普通b-tree索引,业务系统恢复正常。
B-TREE索引,一般情况下选择普通的b-tree索引,也是oracle默认的索引。
位图索引的使用场景: 位图索引, 对于不同的值很少的列,且数据量较大,且DML操作很少,这种情况可以选择使用位图索引。比如性别,只有男和女 且DML操作也会很少,此时选择位图索引,效率可能会更高。
猜你喜欢
- 2024-10-25 SQL查询慢,是因为没用对索引(sql查询很慢怎么解决)
- 2024-10-25 索引让一系列最熟悉的SQL语句飞起来了
- 2024-10-25 Oracle优化-建立索引(三)(oracle创建索引慢)
- 2024-10-25 大数据Apache Druid(二):Druid数据结构及架构原理
- 2024-10-25 OpenGL中位图的操作(opengl图像处理)
- 2024-10-25 实时数仓入门训练营:Hologres 性能调优实践
- 2024-10-25 DBA日记之Oracle索引设计原则二(oracle 索引 高效设计)
- 2024-10-25 DBA日记之Oracle数据库索引一(索引 oracle)
- 2024-10-25 九、颜色模式之索引颜色(索引色的色彩总数是多少)
- 2024-10-25 oracle索引和用户权限(oracle 创建索引权限)
你 发表评论:
欢迎- 最近发表
-
- IT之家学院:使用PIN或密码审批管理员权限
- Yarn 安装的时候提示错误 error:0308010C:digital envelope routines
- Windows常用的一些CMD运行命令(windows常见的命令)
- 电脑忘记开机密码10秒解决(戴尔电脑忘记开机密码10秒解决)
- 如何下载Windows 10聚焦提供的锁屏壁纸
- Windows CMD 命令大全:简单粗暴收藏!
- 系统小技巧:解决CHKDSK只读模式问题
- Windows的cmd都有哪些奇技淫巧?这22个CMD命令记得收藏起来!
- windows错误代码0x80072EE2?win10系统更新错误问题的处理方法
- Windows 10技术预览版快捷键方式汇总
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)