iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >外键无索引引发的血案
  • 328
分享到

外键无索引引发的血案

2024-04-02 19:04:59 328人浏览 安东尼
摘要

一、故障现象      周末接到一个CASE,故障描述是,当时业务产生大量的TX锁,DBA因为不怎么了解,锁的原理,盲目的KILL 进程,无法尽快的定位问题。为了不影响业

一、故障现象

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

您可能感兴趣的文档:

--结束END--

本文标题: 外键无索引引发的血案

本文链接: https://www.lsjlt.com/news/47678.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 外键无索引引发的血案
    一、故障现象      周末接到一个CASE,故障描述是,当时业务产生大量的TX锁,DBA因为不怎么了解,锁的原理,盲目的KILL 进程,无法尽快的定位问题。为了不影响业...
    99+
    2024-04-02
  • 外键上有无索引的影响
    原文链接: https://www.modb.pro/db/22800 摘要:今天在摩天轮上看到一个问题,《oracle外键无索引为什么会导致死锁》,为什么呢? 现在通过一些简单的案例来测试一下,外键...
    99+
    2024-04-02
  • MySQL 中一个双引号的错位引发的血案
    来源:For DBAwww.fordba.com/mysql-double-quotation-marks-accident.html一、前言最近经常碰到开发误删除误更新数据,这不,他们又给我找了个麻烦,我...
    99+
    2024-04-02
  • oracle外键索引吗
    oracle外键索引,为了确定是否需要为外键创建索引,需要考虑以下几个因素:1、外键列的查询和连接操作的使用频率,如果外键列上经常执行这样的操作,那么为外键列创建索引是很有必要的,以提高这些操作的性能;2、外键列的基数,基数是指外键列中不同...
    99+
    2023-08-03
  • MySQL的几个概念:主键,外键,索引,唯一索引
    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但可以有多个候选索引。主键常常与外键构成参照完整性约束,防止出现数据不一致。主...
    99+
    2024-04-02
  • 外键无索引对数据库的影响以及增加索引后的效果
    1.  测试方法 在 测试环境下,创建两张表, PK1和FK1,通过外键PK_ID进行关联, 检查外键无索引和有索引情况下对数据库的影响 2.  测试环境 如下...
    99+
    2024-04-02
  • Mysql 索引(三)—— 不同索引的创建方式(主键索引、普通索引、唯一键索引)
    了解了主键索引的底层原理,主键索引其实就是根据主键字段建立相关的数据结构(B+树),此后在使用主键字段作为条件查询时,会直接根据主键查找B+树的叶子结点。除了主键索引外,普通索引和唯一键索引也是如此,只不过普通索引要稍微绕一点,下面会具体介...
    99+
    2023-09-12
    mysql 数据库 java
  • 外键缺索引检查脚本
    --以ZLHIS用户执行 Select Child_Table, Foreign_Key,       Cname1 || Nvl2(Cname2, ',' || Cna...
    99+
    2023-06-05
  • MySQL主键索引和非主键索引的实现
    目录主键索引(Primary Key Index):非主键索引(Secondary Index):在mysql中,主键索引和非主键索引有不同的作用和特点: 主键索引(Primary Key Index): 主键索引是一种...
    99+
    2023-10-27
    MySQL 主键索引 MySQL 非主键索引
  • 怎么进行主键local索引、unique local索引、分区索引顺序的理解
    本篇文章为大家展示了怎么进行主键local索引、unique local索引、分区索引顺序的理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 ...
    99+
    2024-04-02
  • sql外键引用了无效的表如何解决
    在SQL中,如果外键引用了无效的表,通常会收到一个错误消息,指示找不到或无效的引用表。为了解决这个问题,您可以按照以下步骤进行操作:...
    99+
    2024-04-09
    sql
  • sql中外键引用了无效的表格怎么办
    当 sql 中的外键引用了不存在的表格时,会发生此错误。解决方法包括:检查表格是否存在,重建外键,恢复已删除的表格,检查权限,重新启动数据库。 SQL 中外键引用了无效的表格 当 SQ...
    99+
    2024-05-10
    数据丢失
  • InnoDB主键索引树和二级索引树的示例分析
    这篇文章将为大家详细讲解有关InnoDB主键索引树和二级索引树的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们这里讨论InnoDB存储引擎,数据和索引存储在同一个文件student.ibd场景...
    99+
    2023-06-29
  • InnoDB主键索引树和二级索引树的场景分析
    我们这里讨论InnoDB存储引擎,数据和索引存储在同一个文件student.ibd 场景1:主键索引树 uid是主键,其他字段没有添加任何索引 select * fro...
    99+
    2024-04-02
  • 理解数据库中主键、外键以及索引是什么
    这篇文章给大家分享的是有关理解数据库中主键、外键以及索引是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。数据库中的主键指的是能够唯一标识一条记录的属性或属性组,外键指的是另一...
    99+
    2024-04-02
  • R语言 install.packages 无法读取索引的解决方案
    问题描述 在公司的Centos服务器上安装R的包,总是安装不成功,然后有如下提醒: Warning: 无法在貯藏處https://mirrors.ustc.edu.cn/CRAN...
    99+
    2024-04-02
  • Oracle中关于外键缺少索引的原因是什么
    本篇内容介绍了“Oracle中关于外键缺少索引的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在...
    99+
    2024-04-02
  • 计算多索引 pandas 数据帧外部索引每行的总和
    问题内容 我有一个数据框:seller、item、price、shipping、免费送货最低、count available和count required。我的目标是根据稍后计算的 t...
    99+
    2024-02-05
  • sql中外键引用了无效的表格怎么办呢
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • MySQL中索引的案例分析
    小编给大家分享一下MySQL中索引的案例分析,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1. 索引种类在 MySQL 中,从索引的逻辑或者说字段特性来区分,索引大致分为以下几个种类:普通索引...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作