百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

DBA日记之Oracle位图索引引发的灾难

ccwgpt 2024-11-25 10:20 72 浏览 0 评论


故障发生的经过

这也是之前的一个处理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之间互相阻塞,所以怀疑是不是有特殊类型,发现表OUTPAYMTSUBMITFLAG创建了位图索引。

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操作也会很少,此时选择位图索引,效率可能会更高。

相关推荐

土豪农村建个别墅不新鲜 建个车库都用框架结构?

农村建房子过去都是没车库,也没有那么多豪车,一般直接停在路边或者院子里。现在很多人都会在建房子的时候留一个车库,通过车库可以直接进入客厅,省得雨雪天气折腾。农村土豪都是有钱任性,建房子跟我们普通人不一...

自建框架结构出现裂缝怎么回事?

三层自建房梁底与墙体连接处裂缝是结构问题吗?去前帮我姑画了一份三层自建房的图纸,前天他们全部装修好了。我姑丈突然打电话给我说他发现二层的梁底与墙分离了,有裂缝。也就是图纸中前面8.3米那跨梁与墙体衔接...

钢结构三维图集-框架结构(钢柱对接)

1、实腹式钢柱对接说明1:1.上节钢柱的安装吊点设置在钢柱的上部,利用四个吊点进行吊装;2.吊装前,下节钢柱顶面和本节钢柱底面的渣土和浮锈要清除干净,保证上下节钢柱对接面接触顶紧;3.钢柱吊装到位后...

三层框架结构主体自建房设计案例!布局13*12米占地面积156平米!

绘创意设计乡村好房子设计小编今日头条带来分享一款:三层框架结构主体自建房设计案例!布局13*12米占地面积156平米!本案例设计亮点:这是一款三层新中式框架结构自建房,占地13×12米,户型占地面积...

Casemaker机箱框架结构3D图纸 STEP格式

农村自建房新宠!半框架结构凭啥这么火?内行人揭开3个扎心真相

回老家闲逛,竟发现个有意思的现象:村里盖新房,十家有八家都选了"半框架结构"。隔壁王叔家那栋刚封顶的二层小楼,外墙红砖还露着糙面没勾缝,里头的水泥柱子倒先支棱得笔直,这到底是啥讲究?蹲...

砖混结构与框架结构!究竟有何区别?千万别被坑!

农村自建房选结构,砖混省钱但出事真能保命吗?7月建材价格波动期,多地建房户因安全焦虑陷入选择困境——框架结构虽贵30%,却是地震区保命的关键。框架柱和梁组成的承重体系,受力分散得像一张网。砖混靠墙硬扛...

砖混结构与框架结构,究竟有何区别?千万别被坑!

农村建房选砖混结构还是框架结构?这个问题算是近期留言板里问得最多的问题了。今天咱们说说二者的区别,帮您选个合适的。01成本区别假如盖一栋砖混结构的房子需要30万,那么换成框架结构,一般要多掏30%的费...

6个小众却逆天的App神器,个个都是黑科技的代表

你的手机上有哪些好用的软件?今天我就给大家分享6个小众却逆天的App神器,个个都是黑科技的代表!01*Via浏览器推荐理由:体积极小的浏览器,没有任何广告。使用感受:它的体量真的很小,只有702KB,...

合肥App开发做一个app需要多少钱?制作周期有多久?

在移动互联网时代,开发一款APP已成为企业数字化转型与个人创业的重要途径。然而,APP的开发成本与制作周期受功能复杂度、技术架构、团队类型等多重因素影响,差异极大。好牛软件将从这两个维度展开分析,帮助...

详解应对App臃肿化的五大法则

编者注:本文转自腾讯ISUX。先来看一张图:图上看到,所有平台上用户花费时间都在减少,除了移动端。观察身边也是如此,回家不开电脑的小伙伴越来越多。手机平板加电视,下班场景全搞定。连那些以前电脑苦手的...

实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统

需求背景春节活动中,多个业务方都有发放优惠券的需求,且对发券的QPS量级有明确的需求。所有的优惠券发放、核销、查询都需要一个新系统来承载。因此,我们需要设计、开发一个能够支持十万级QPS的券系...

8种移动APP导航设计模式大对比

当我们确定了移动APP的设计需求和APP产品设计流程之后,开始着手设计APP界面UI或是APP原型图啦。这个时候我们都要面临的第一个问题就是如何将信息以最优的方式组合起来?也许我们对比和了解了其他一些...

数字资产支付 App 的技术框架

开发一款功能强大、安全可靠的数字资产支付App需要一个整合了区块链技术、后端服务、前端应用以及第三方集成的全栈技术框架。这个框架的核心在于保障数字资产的安全流通,并将其高效地桥接到传统的法币支付场...

从MyBatis到App架构:设计模式全景应用指南

从MyBatis到App架构:设计模式全景应用指南引言在企业级应用和服务端开发领域,MyBatis凭借其灵活、简洁、强大的ORM映射能力被广泛应用。而它之所以能拥有如此优秀的可扩展性和工程可维护性,正...

取消回复欢迎 发表评论: