千家信息网

外键无索引引发的血案

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、故障现象周末接到一个CASE,故障描述是,当时业务产生大量的TX锁,DBA因为不怎么了解,锁的原理,盲目的KILL 进程,无法尽快的定位问题。为了不影响业务,重启了数据库,导致大量的用户投诉。Fr
千家信息网最后更新 2026年11月01日外键无索引引发的血案
一、故障现象

周末接到一个CASE,故障描述是,当时业务产生大量的TX锁,DBA因为不怎么了解,锁的原理,盲目的KILL 进程,无法尽快的定位问题。为了不影响业务,重启了数据库,导致大量的用户投诉。

Fri Mar 13 15:05:17 2020

opiodr aborting process unknown ospid (33292328) as a result of ORA-28

Fri Mar 13 15:05:59 2020

opiodr aborting process unknown ospid (34668796) as a result of ORA-28

Fri Mar 13 15:06:11 2020

opiodr aborting process unknown ospid (33554618) as a result of ORA-28

Fri Mar 13 15:06:23 2020

opiodr aborting process unknown ospid (34471986) as a result of ORA-28

Fri Mar 13 15:06:45 2020

二、分析过程

1从awrtop 等待事件看,产生大量的TX

2awr top sql

3 ASH 分析

从awr看当时阻塞的应该是insert语句导致,awr执行语句比较长的

而awr中放在首位的是UPDATA及DELETE,没有办法继续看ash一些内容,发现如下表使用比较高,

而在awr中,无此表的相关语句,

从上边分析看出,锁住的有insert语句,因此怀疑为外键没有索引导致。

查看表的结构。

如下:

DELETE FROM bTT WHERE id_=:1 引起的,并且 在task_id 字段上不存在索引,

三、结论

添加表索引后问题解决,再也没有出现过大量enq锁

四、总结

在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引。

外键缺失索引影响

外键列上缺少索引会带来三个问题,限制并发性、影响性能、还有可能造成死锁。所以对于绝大部分场景,我们应该尽量考虑在外键上面创建索引

  1. 影响性能。如果子表外键没有创建索引,那么当父表查询关联子表时,子表将进行全表扫描。影响表连接方式。

  2. 影响并发。无论是更新父表主键,或者删除一个父记录,都会在子表中加一个表锁(在这条语句完成前,不允许对子表做任何修改)。这就会不必要地锁定更多的行,而影响并发性

3. 在特殊情况下,还有可能造成死锁。

不需要对外键建索引,满足的条件如下:

1. 不会删除父表中的行。

2. 不论是有意还是无意,总之不会更新父表 的唯一 / 主键字段值。

3. 不会从父表联结到子表, 或者更通俗的讲,外键列不支持子表的一个重要访问路径,而且你在谓词中没有使用这些外键累从子表中选择数据 。

索引 影响 语句 数据 问题 分析 业务 字段 性能 故障 数据库 死锁 更新 特殊 通俗 重要 三个 上边 不怎么 事件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 广州万易互联网科技有限公司 中资互联网科技 喔噻互联网科技 青岛互联网科技公司 碳银互联网科技 广州紫鲸互联网科技 互联网公司会议桌创意科技软装饰 北京华百购互联网科技有限公司 中化能源互联网科技招聘 受益于互联网科技的高速发展 广州新华互联网科技学校电竞方面 用友工业互联网科技发展 科技互联网的核心竞争力 宁波跨境商互联网科技有限公司 广东鹅鹅鹅互联网科技有限公司 互联网科技新闻 云南互联网科技学费 科技和互联网行业的特点 安徽九吞吴互联网科技有限公司 华服互联网科技靠谱吗 科技互联网政务服务 互联网科技社 科技类互联网 科技服务与互联网 成都仁贤领冠互联网科技有限公司 米聚互联网科技南京有限公司排面 西安有哪些互联网高科技企业 普陀区互联网教育科技管理办法 杭州融税互联网科技有限公司
0