1、排它锁、共享锁出现的意义

数据库的并发事务对数据库进行读写,可能会破坏事务的隔离性和数据一致性。为了保持事务的隔离性,系统必须对事务之间的相互作用加以控制。最典型的做法就是当一个事务访问某个数据对象时,

其他事务都不能更新该数据对象。最常用的控制手段就是加锁,该方法是只允许事务访问当前持有锁的数据项。其中最常用的有排它锁、共享锁。

2、排它锁(Exclusive Locks 简称X锁)

排它锁也成为写锁,主要用于对数据读写操作时进行锁定。如果事务T对数据A加上排它锁后,就只允许事务T对数据A的读取、修改,其他事务对数据A不能再加任何锁,也不能读取和修改数据A,直到事务T释放A上的排它锁。

3、共享锁(Share Locks 简称S锁)

共享锁也成为读锁,主要用于对数据进行读取操作时进行锁定。如果事务T对数据A加上共享锁后,事务T只能读取数据A但不可以修改,其他事务可以读数据A加S锁来读取,只要数据A上有共享锁,任何事务只能对其加共享锁,而不能加排它锁来修改。

4、封锁协议

4.1 封锁协议的作用

因为数据库加锁可以限制其他事务对数据的操作,但会降低事务的并发性,这个时候可以采用封锁协议来保证事务的一致性前提下尽可能提高并发性。封锁协议是对数据加锁类型、加锁时间、释放锁时间的一些规则的描述。

常用的封锁协议:一级封锁协议、二级封锁协议、三级封锁协议。

  • 一级封锁协议:主要是指事务T在修改数据A之前必须先对其加上排它锁,直到事务结束后才能释放排它锁。一级封锁协议使得在一个事务修改数据期间,其他事务不能对该数据进行修改,只能等该事务结束之后,主要解决了丢失修改的问题。

  • 二级封锁协议:主要是在一级封锁协议加上事务T在读取数据A之前必须对其加上共享锁,读取完成后释放共享锁。二级封锁协议使得一个事务不能读取被其他事务修改中的数据。解决了数据脏读的问题。但事务T如果读取数据A之后,其他事务再对A做完修改,事务T再去读取A,会产生不可重复的错误。

  • 三级封锁协议:主要是在一级封锁协议加上事务T在读取数据A之前必须对其加上共享锁,读取完成后释放共享锁,直到事务结束后才释放共享锁。这样就解决了二级封锁协议的不可重复读的问题。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

事务管理基础:排它锁和共享锁相关知识笔记相关推荐

  1. 项目管理基础:系统切换相关知识笔记

    1.系统试运行主要任务 对新系统进行初始化.补录各种原始数据记录 记录系统运行过程中的数据和状况 核对新旧系统输出结果是否正确 对实际系统的输入方式进行考察主要包括是否方便.效率.可靠性.误操作保护等 ...

  2. SQL语言基础:SQL授权相关知识笔记​

    1.数据控制 数据控制是控制对用户存取的权力,由DBA来决定.DBMS数据控制与功能: 1.通过GRANT和REVOKE将授权通知系统,并存入数据字典. 2.当用户发起请求时,根据授权情况检查是否执行 ...

  3. 计算机网络基础:广域网协议相关知识笔记

    广域网常指覆盖范围广.数据传输速率较低,以数据通信为目的的数据通信网.广域网主要是通过专用的或交换式的连接把计算机连接起来.广域网传输协议主要包括:PPP(点对点协议).DDN.ISDN(综合业务数字 ...

  4. js基础--数据类型检测的相关知识

    欢迎访问我的个人博客:www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了. 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件. 话不多说, ...

  5. 事务管理基础:数据库的并发控制相关知识笔记

    1.并发操作的概念介绍 并发操作主要是指在多用户共享的系统当中,可能存在很多用户同时对同一个数据进行操作.并发操作会造成丢失更新.不可重复读.读脏数据.主要原因是事务的并发操作破坏了事务的隔离性. 2 ...

  6. 计算机系统基础:文件管理相关知识笔记

    一.文件的相关概念 1.为什么要有文件管理? 文件系统主要是为了方面用户访问外部存储器信息,而不去关注内部存储的机制,只需要根据文件名就可以高效的存取信息. 2.文件的定义 文件是这一组具有符号名.在 ...

  7. 文件系统 文件时间记录在哪里_计算机系统基础:文件管理相关知识笔记

    一.文件的相关概念 1.为什么要有文件管理? 文件系统主要是为了方便用户访问外部存储器信息,而不去关注内部存储的机制,只需要根据文件名就可以高效的存取信息. 2.文件的定义 文件是这一组具有符号名.在 ...

  8. 数据库系统故障相关知识笔记

    数据库系统中可能发生的故障主要包括事务故障.系统故障.介质故障.计算机病毒等.下面给大家简单整理一下相关的故障知识笔记. 1.事务故障 事务故障是因为程序执行错误而引起的非预期.异常终止的故障.主要有 ...

  9. SQLServer子查询相关知识笔记

    今天给大家介绍以下SQLServer子查询相关知识,希望对大家能有所帮助! 1.子查询概念介绍 子查询可以嵌套在SELECT.INSERT.UPDATE.DELETE语句或其他子查询语句中的查询,子查 ...

最新文章

  1. Redux 学习总结 (React)
  2. Linux 下gedit编辑器的使用
  3. php 映射程序,windows磁盘映射技术分享
  4. ASP.NET中TextBox控件的AutoCompleteType属性(不保存历史输入记录)
  5. pythonrandom库seed_Python
  6. html对图片轮播脚本怎么调用,【jquery前端开发】可调整的幻灯片(图片轮播)
  7. 混合云是趋势?阿里云与私有云厂商 ZStack合作
  8. mybatis进阶(动态sql、关系映射、延迟加载、缓存)
  9. mac 搭建mysql环境_Mac下MySQL环境搭建的步骤详解
  10. linux系统怎么装锐捷,Linux锐捷上网安装过程
  11. VBlog项目代码理解之前后端交互
  12. npm install 报警告npm WARN
  13. 《道德经》马王堆出土帛书版
  14. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新
  15. python脚本实现GNSS数据自动下载
  16. canvas -小球自由落体运动
  17. KDD Cup 2020多模态召回比赛季军方案与广告业务应用
  18. 最全电商分类信息(07)
  19. 循环码编码与译码(MATLAB实现)
  20. windows ce linux,Win CE + Linux双系统 总结

热门文章

  1. 零食嘴----美食领域的美丽说
  2. python之moviepy库的安装与使用
  3. orb-slam2在PC和ARM上运行
  4. java 分号 转义_java – 正则表达式和转义和未转义的分隔符
  5. java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了
  6. 第二章:用户登录管理模块
  7. webstorm 不知道手贱点了什么,有时候会自动删除分号
  8. SpringMVC(十七-二十) ModelAttribute 注解
  9. Spring LDAP
  10. 解决IE中img.onload失效的方法