iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle锁-行级排它锁(一)
  • 620
分享到

Oracle锁-行级排它锁(一)

Oracle锁-行级排它锁(一) 2016-12-01 22:12:59 620人浏览 猪猪侠
摘要

下一篇:共享锁 学习电子书:https://docs.oracle.com/cd/E18283_01/server.112/e16508/consist.htm#CNCPT1339 什么是排它锁? 每一个事务在修改资源时会获得排他

Oracle锁-行级排它锁(一)

下一篇:共享

学习电子书:https://docs.oracle.com/cd/E18283_01/server.112/e16508/consist.htm#CNCPT1339

什么是排它锁?

每一个事务修改资源时会获得排他锁,该事务不结束,则其他事务不能修改此资源。(注意:这里的修改不是数据“增删查改”中的改。数据是资源的一种,可以先理解为修改数据。第一个事务修改资源,第一个事务就先占有排他锁)。

什么是行级排他锁?

针对行数据修改,事务占有的排他锁,称作行级排它锁(或排他的行锁,或粒度为行的排它锁)。行数据修改的修改不是指数据内容的修改,它是指新增行,删除行,修改行内容

实战:

这里有一个bank表,主键是id。下面的部分例子以当前存在的id=2的行进行说明。

 

 

第一种行修改:某一个事务删除行,其他事务不能新增该行,修改该行内容,删除该行。

打开一个窗口,针对id=2的行,执行删除操作,不commit也不rollback。(一个窗口就是一个事务)

打开另一个窗口,单独执行下面每一条语句,你会发现它都在Executing。

update bank set money = 8000 where id=2; 
insert into bank values (2,8000); --主键一样
delete from bank b where b.id=2;

 

 

 

 

 第二种行修改:某事务新增一行数据,另外的事务新增主键相同的行,则会等待排它锁的释放。

一个窗口执行 insert into bank values (900,8000)。另一个窗口单独执行下面的每一句sql。(每重新自测一句SQL,都要把当前事务结束掉再重新开始。)

--以下的新增操作需要等待
delete from bank b where b.id=900; -- 0条删除,原本表里就没有这条记录
update bank set money = 8000 where id=900; --0条修改,原本表里就没有这条记录
--Executing,因为可以Commit意味着就要成功插入,
--但另外的事务也加了相同主键的行,所以会等跟自己冲突的那行的排它锁释放。
insert into bank values (900,8000);

第三种行修改:某事务修改一行数据,另外的事务修改、删除相同的行,则会等待排他锁的释放。

--另一个事务修改id为2的数据 update bank b set money=900 where b.id=2
update bank set money = 8000 where id=2; --等待
delete from bank b where b.id=2; --等待
insert into bank values (2,8000); --不等待,因为另外的事务update不了主键,而新增就判断约束是否重复。

 

您可能感兴趣的文档:

--结束END--

本文标题: Oracle锁-行级排它锁(一)

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

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

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

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

下载Word文档
猜你喜欢
  • Oracle锁-行级排它锁(一)
    下一篇:共享锁 学习电子书:https://docs.oracle.com/cd/E18283_01/server.112/e16508/consist.htm#CNCPT1339 什么是排它锁? 每一个事务在修改资源时会获得排他...
    99+
    2016-12-01
    Oracle锁-行级排它锁(一)
  • MySQL的表级锁,行级锁,排它锁和共享锁
    目录前言一、表级锁&行级锁二、排它锁&共享锁1. 测试不同事务之间排它锁和共享锁的兼容性2. 测试行锁加在索引项上三、串行化隔离级别测试前言 如果我们和面试官聊到事务的问题,怎么回答呢? 先说下事务是什么...
    99+
    2022-07-14
    MySQL表级锁 MySQL行级锁 MySQL排它锁 MySQL共享锁
  • MySQL的表级锁,行级锁,排它锁和共享锁是什么
    这篇文章主要介绍“MySQL的表级锁,行级锁,排它锁和共享锁是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL的表级锁,行级锁,排它锁和共享锁是什么”文章能帮助大家解决问题。前言先说下事...
    99+
    2023-07-02
  • MySQL表锁、行锁、排它锁及共享锁怎么使用
    这篇文章主要介绍“MySQL表锁、行锁、排它锁及共享锁怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL表锁、行锁、排它锁及共享锁怎么使用”文章能帮助大家解决问题。一、事务隔离机制的选...
    99+
    2023-06-29
  • MySQL表锁、行锁、排它锁及共享锁的使用详解
    目录前言一、事务隔离机制的选择二、表级锁&行级锁三、排它锁(Exclusive)和共享锁(Shared)1. 测试不同事务之间排它锁和共享锁的兼容性2. 测试行锁加在索引项上...
    99+
    2022-11-13
  • MySQL中表锁,行锁,共享锁,排它锁,间隙锁的示例分析
    小编给大家分享一下MySQL中表锁,行锁,共享锁,排它锁,间隙锁的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!锁,在现...
    99+
    2022-10-18
  • 理解共享锁和排它锁
    1.2 例子: 共享锁事务读取 以不同的 session 来举例: a: start transaction; select * from demo where id = 1 lock in share mod...
    99+
    2014-06-24
    理解共享锁和排它锁
  • Mysql锁之行级锁和表级意向锁
    Innodb存储引擎实现了两种行级锁: l   共享锁 l   排他锁 这两种锁之间的兼容关系如下图所示 共享锁 排他锁 ...
    99+
    2022-10-18
  • MySQL的意向共享锁、意向排它锁和死锁
    目录一、InnoDB的表级锁二、意向共享锁和意向排它锁三、死锁1. 数据库中的死锁2. 死锁场景以及解决方法3. 操作三、锁的优化建议一、InnoDB的表级锁 在绝大多数情况下应该使用行锁,因为事务和行锁往往是选择Inn...
    99+
    2022-07-14
    MySQL意向共享锁 MySQL意向排它锁 MySQL死锁
  • Mysql行级锁和页级锁的优缺点
    本篇内容介绍了“Mysql行级锁和页级锁的优缺点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!    如果...
    99+
    2022-10-18
  • mysql锁之三种行级锁介绍
    本文主要介绍 1.mysql三种行锁介绍 2.RR模式下,next-key lock为什么可以解决幻读问题 首先,创建一张表: mysql> show create table test0...
    99+
    2022-10-18
  • MySql的行级锁和表级锁是怎样的
    MySql的行级锁和表级锁是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 MySql 行级锁 表级锁如何保...
    99+
    2022-10-18
  • 一文学习MySQL 意向共享锁、意向排他锁、死锁
    目录一、InnoDB表级锁二、意向共享锁和意向排他锁三、死锁1. 数据库中的死锁2. 死锁场景以及解决办法3. 操作四、锁的优化建议一、InnoDB表级锁 我们知道,InnoDB是支...
    99+
    2022-11-13
  • mysql数据库中行级锁、表级锁和页级锁的区别是什么
    这篇文章主要介绍了mysql数据库中行级锁、表级锁和页级锁的区别是什么,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。按粒度可以分为:1、行级锁,MySQL中锁定粒度最细的一种锁,表示只针...
    99+
    2022-10-18
  • mysql中什么是排它锁
    本篇文章为大家展示了mysql中什么是排它锁,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、说明排他锁 exclusive lock(也叫writer lock)又称写锁,是悲观锁的一种实现。排它...
    99+
    2023-06-15
  • MySQL的意向共享锁、意向排它锁和死锁是什么
    本篇内容介绍了“MySQL的意向共享锁、意向排它锁和死锁是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、InnoDB的表级锁在绝大多...
    99+
    2023-07-02
  • mysql中更新锁与排它锁的示例分析
    这篇文章将为大家详细讲解有关mysql中更新锁与排它锁的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一直没有认真了解UPDATE操作的锁,最近在MSDN...
    99+
    2022-10-18
  • MySQL行级锁测试
        MySQL innodb存储引擎使用与Oracle相同的行锁机制,对如何查看系统中存在的行锁情况在下面的实验中将会看到。下面是测试过程: session 1:更新...
    99+
    2022-10-18
  • MySQL中的行级锁
    行级锁的类型主要有三类: Record Lock,记录锁,也就是仅仅把一条记录锁上;Gap Lock,间隙锁,锁定一个范围,但是不包含记录本身,只存在于可重复读隔离级别,目的是为了解决可重复读隔离级别下幻读的现象Next-Key Lock:...
    99+
    2023-09-03
    mysql sqlserver 数据库
  • 使用mybatisplus操作mysql给select加数据行的排它锁并释放锁
    在使用 MyBatis-Plus 查询时,也可以通过在 SQL 语句中添加 FOR UPDATE 子句来实现加上数据行的排它锁。同样地,要释放锁需要执行 commit 或 rollback 操作,这样...
    99+
    2023-09-30
    mysql mybatis 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作