文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle锁-行级排它锁(一)

2016-12-01 22:36

关注

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不了主键,而新增就判断约束是否重复。

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯