在有位图索引的表上进行DML操作与enq: TX - row lock contention等待事件问题分析

  • 前言
  • 模拟场景
  • 总结

前言

本文通过模拟实验,来分析 有位图索引的表的DML操作 对数据库造成的影响。

模拟场景

  1. 生成数据

    SQL> create table bm_table (id number, name varchar2(20), gender varchar2(1));
    SQL> create bitmap index idx_bm_table on bm_table(gender);
    SQL> insert into bm_table values(1,'zhang san','M');
    SQL> insert into bm_table values(2,'li si','M');
    SQL> insert into bm_table values(3,'wang wu','F');
    SQL> insert into bm_table values(4,'zhao liu','F');
    SQL> commit;SQL> select * from bm_table;ID NAME       G
    ---------- -------------------- -1 zhang san        M2 li si        M3 wang wu      F4 zhao liu     F
  2. 多个session对表进行DML操作

    #会话1,执行删除id=1的数据
    SQL> delete from bm_table where id=1;1 row deleted.#会话2,执行删除id=3的数据,没有阻塞
    SQL> delete from bm_table where id=3;1 row deleted.#会话2,执行删除id=2的数据,处于等待状态
    SQL> delete from bm_table where id=2;
  3. 查询此时数据库的等待事件

    SQL> select v.sid, v.SERIAL#, v.PROGRAM, v.EVENT, v.p1, v.p2, v.p3, v.SQL_ID,s.SQL_TEXTfrom v$session v, v$sql swhere v.SQL_ID=s.SQL_ID and v.TYPE = 'USER';SID  SERIAL# PROGRAM EVENT   P1  P2  P3  SQL_ID  SQL_TEXT
    256 2557    plsqldev.exe    SQL*Net message from client 1413697536  1   0   6vs7uc4hft38t   select v.sid, v.SERIAL#, v.PROGRAM, v.EVENT, v.p1, v.p2, v.p3, v.SQL_ID,s.SQL_TEXT   from v$session v, v$sql s   where v.SQL_ID=s.SQL_ID  and v.TYPE = 'USER' 258   6274    sqlplus.exe enq: TX - row lock contention   1415053316  458757  7280    91r3zdpu5q0j7   delete from bm_table where id=2
    

    此时数据库出现了enq: TX - row lock contention等待事件

  4. 查看ASH 报告


    从这可以看住锁住的对象是索引:IDX_BM_TABLE,把索引删除后,delete操作能顺利进行。

总结

位图索引存放的索引键值指向的多行,当对表进行DML操作时,同一键值的行,都将会被锁住,这时多个会话来执行DML操作时,就会造成阻塞。

所以在遇到有位图索引的表时,建议删除位图索引优化

在有位图索引的表上进行DML操作与enq: TX - row lock contention等待事件问题分析相关推荐

  1. oracle 会话数上不去_程序员笔记|全面解析Oracle等待事件的分类、发现及优化

    一.等待事件由来 大家可能有些奇怪,为什么说等待事件,先谈到了指标体系.其实,正是因为指标体系的发展,才导致等待事件的引入.总结一下,Oracle的指标体系,大致经历了下面三个阶段: 以命中率为主要参 ...

  2. oracle怎么捕获表上的DML语句(不包括select)语句)

    可以采用dml触发器,如 CREATE OR REPLACE TRIGGER tr_capt_sql BEFORE DELETE OR INSERT OR UPDATE ON manager.test ...

  3. Oracle 位图索引

    内容简介: 1.位图索引 1.1位图索引使用注意事项; 1.2 使用位图索引; 1.3 位图索引对DML操作的影响; 2.位图连接索引 2.1 明确需求后使用位图索引; 2.1创建位图连接索引的注意事 ...

  4. 【索引分类】位图索引

    位图索引 位图索引非常适合于决策支持系统(Decision Support System,DSS)和数据仓库,它们不应该用于通过事务处理应用程序访问的表.它们可以使用较少到中等基数(不同值的数量)的列 ...

  5. oracle 位图索引 死锁,Oracle位图索引引发的阻塞与死锁

    前面我介绍了itl引发的阻塞与死锁,这里有必要再介绍一下位图索引引发的阻塞与死锁,因为这个也是不同于普通死锁的一种死锁方式,在有位图索引存在的表上面,其实很容易就引发阻塞与死锁.这个阻塞不是发生在表上 ...

  6. oracle位图索引语句,oracle之位图索引

    位图索引适用于低基数(low-cardinality)列,所谓低基数列就是指这个列只有很少的可取值. 位图索引的问题: 采用位图索引,一个键指向多行,可能数以百计甚至更多.如果更新一个位图索引键,那么 ...

  7. oracle 导出secquence,oracle等待事件7——事務上的等待事件

    1.enq:TM-contention 執行DML期間,為防止對DML相關的對象進行修改,執行DML的進程必須對該表獲得TM鎖,若獲得TM鎖的過程發生爭用,則等待enq:TM-contention事件 ...

  8. Oracle索引梳理系列(四)- Oracle索引种类之位图索引

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  9. Oracle教程之四招提高Oracle位图索引的使用效果

    位图索引是Oralce数据库索引中的异类,其在某些比较特殊的场合中有突出的表现.一般来说,位图索引的效果直接跟列的基 数相关.为此在谈到如何提高位图索引的使用效果时,也往往跟这个列的基数相关.为此必须 ...

  10. 【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究

    通过以下实验,来验证Bitmap位图索引较之普通的B-Tree索引锁的"高昂代价".位图索引会带来"位图段级锁",实际使用过程一定要充分了解不同索引带来的锁代价 ...

最新文章

  1. hdu3829(最大独立集)
  2. 利用反射对应数据库字段
  3. linux下mysql安装笔记
  4. webservice ssl 2 下载webservice服务端所有的证书
  5. leetcode 743. Network Delay Time | 743. 网络延迟时间(邻接矩阵,Dijkstra 算法)
  6. 论文排版怕翻车?这个排版神器是时候用起来了!
  7. php 采集程序 宋正河
  8. C语言排序方法-----直接插入排序
  9. 有史以来最容易理解的控制反转(IoC)与注入依赖(DI)
  10. 常用的Java虚拟机参数
  11. Newtonsoft 转换json
  12. java doc 文件转pdf_Java中Word转PDF解决方案
  13. 技巧:如何提高git下载速度
  14. 木马病毒属于什么计算机病毒,下列不属于计算机病毒分类的是()。 A.文件型病毒 B.复合型病毒 C.系统引导病毒 D.木马病毒 - 上学吧找答案(手机版)...
  15. python:talib 计算 SAR
  16. @Value设置默认值
  17. CVPR2022点云语义分割:Stratified Transformer for 3D Point Cloud Segmentation
  18. ps制作台式计算机图标,ps制作计算机图标
  19. 全球与中国飞机内部照明系统市场深度研究分析报告(2021)
  20. 了解掌握Java的循环语句、条件语句、分支语句(Java 从自学到就业 第3天)

热门文章

  1. 外卖点餐列表滑动 微信小程序_点餐小程序购物车效果实现,点餐小程序购物车列表的实现...
  2. Vue安装教程 (一)
  3. 期货量化交易程序CTP入门指南 二
  4. Spring cloud和规则引擎urule整合代码
  5. 20 犹豫:灰度认知,黑白决策
  6. ubuntu设置截屏热键(区域截屏)
  7. sipp命令 各参数含义
  8. 超好用的数学教学软件:几何画板Sketchpad for Mac中文版
  9. 使用JS代码将steam喜加一的免费游戏删除。
  10. 怎样恢复手机oracle默认窗口,通达信恢复默认版面,Effects界面如何恢复初始默认设置...