最近正好学习到锁,网上都说在更新一些行之前要把这些行全部锁起来后在更新。比如说,要更新10000行,就会先把这10000

行加行锁,然后更新。本人进行了一下实验

session 1:

created table p (id int);

insert into p values (1);

insert into p values (2);

insert into p values (3);

insert into p values (4);

commit;

session 2:

delete from p where id = 4;

session 3:

select addr ,used_ublk from v$transaction;

ADDR      USED_UBLK

-------- ----------

333B5938          1

选中一条结果,说明session 2中用掉了回滚段中的一个block。

接着返回session 1:

update p set id = 10 where id <= 4;

发现session 1被堵塞

返回session 3 接着运行那条语句

ADDR      USED_UBLK                    ADDR      USED_UBLK

-------- ----------                    -------- ----------

3338CE20          1                    333B5938          1    //上次的

333B5938          1

发现比上次多了一个3338CE20,那多出的这条只能是session 1的了,发现session 1也用了一块回滚段的块,那是不是

可以说明session 1已经进行更新了?但是session 1正在被堵塞,那么可不可以说明:oracle在更新的时候并不是把想要

更新的行全部加锁之后在进行更新,而是一边进行加锁一边进行更新??

回滚全部后

session 2:

delete from p set id = 1;//id为1

已删除 1 行。

session 3:

addr ,used_ublk from v$transaction;

ADDR      USED_UBLK

-------- ----------

333B5938          1

session 1:

update p set id = 10 where id <= 4;

被堵塞

session 3:

ADDR      USED_UBLK

-------- ----------

333B5938          1

没有出现session 1的条目,只有session 2,因为session 2把id为1的加锁了,session 1从一开始就被堵塞,所以一行

也没更新。

本人初学者,不知道这么理解对不对,请大家指点一下~~

oracle中update锁记录,oracle进行update时对行加锁的测试相关推荐

  1. oracle锁类型tx,Oracle中的锁类型

    Oracle中的锁类型主要分以下3种: DML锁(DML lock):DML 代表数据操纵语言(Data Manipulation Language).一般来讲,表示select,insert,upd ...

  2. Oracle一张表写多个触发器,详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响 ...

  3. oracle中的guid,在Oracle中使用Guid

    在Oracle中使用Guid 在Oracle中使用Guid 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g ...

  4. oracle中如何一个逗号分隔的字符串分隔成多行

    oracle中如何一个逗号分隔的字符串分隔成多行? 最近开发了一个功能,为了方便查询,某个表中的某个字段存成了逗号分隔的字符串 然后,在进行表关联查询时,需要将字符串分隔成多行, but,不记得怎么写 ...

  5. oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?

    oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...

  6. oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍

    oracle中UPDATE nowait 的使用方法介绍 1.UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务.如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁 ...

  7. oracle里面的锁,基于oracle中锁的深入理解

    ORACLE里锁有以下几种模式:0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 ...

  8. oracle查看dml锁表,【lock】我所认识的Oracle中的锁,DML锁、DDL锁、闩和内部锁。...

    这个问题很简单,你一定对锁有一个认识,但你未必对锁有一个明确的定义. 官方文档这样描述:Locks are mechanisms that prevent destructive interactio ...

  9. oracle中栓锁,oracle 闩锁介绍

    oracle通过闩锁(latch)和锁定(lock)来实现资源的串行化.闩锁和锁定相同点是:都是用于实现保护数据的完整与准确性.不同点是:闩锁是 一个低级别,轻量级的锁,获得和释放的速度非常快.而锁定 ...

最新文章

  1. Python关于%matplotlib inline
  2. SAP Basis 日常管理
  3. c语言ad采样程序思路,单片机AD采样程序及其寄存器讲解
  4. ITK:使图像的一部分透明化
  5. ISP 图像传感器camera原理
  6. 终端乱码的终极解决方案
  7. 树的直径(51Nod-2602)
  8. 什么是devops开发运维_为什么假设驱动的开发是DevOps的关键
  9. 嘉年华回顾丨 周正中(德哥)谈谈PG怎么这么火
  10. 1.4信息系统基础-软件构件技术知识
  11. php fetch mode,odbc_fetch_into
  12. oracle日期基本数据,oracle日期时间函数总结
  13. 最新sql 2008安装说明 以及 重设sql server 2008 R2的登录密码
  14. 自动驾驶—高精度地图or人工智能or其他
  15. nios IIcommand shell 烧录
  16. java since,javadoc:@version和@since
  17. python turtle后退_Turbot与python教程-实现后退
  18. Sping中怎么处理@Bean注解bean同名的问题
  19. 滴滴顺风车女乘客遇害;华为法律应对澳 5G 禁令;苹果研发新背板技术|极客头条...
  20. iOS 图片捏合放大缩小 点击放大缩小

热门文章

  1. 浮点数的加减计算总结
  2. Underfull hbox (badness 10000) in paragraph at lines 83--86
  3. IEEE写作模板获取
  4. PAT 1059 Prime Factors[难]
  5. 前端跨域问题及解决方案
  6. eclipse下的tomcat内存设置大小(转)
  7. Ms sql pivot unpivot
  8. Lua1.0 代码分析 table.c
  9. 【Android 界面效果43】Android LayoutInflater的inflate方法中attachToRoot的作用
  10. Wayland 1.0 发布,图形服务器