数据库隔离离别及加锁原理
我这4种隔离级别的相应原理总结如下:
READ_UNCOMMITED 的原理:
- 事务对当前被读取的数据不加锁;
- 事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级共享锁,直到事务结束才释放。
表现:
- 事务1读取某行记录时,事务2也能对这行记录进行读取、更新;当事务2对该记录进行更新时,事务1再次读取该记录,能读到事务2对该记录的修改版本,即使该修改尚未被提交。
- 事务1更新某行记录时,事务2不能对这行记录做更新,直到事务1结束。
READ_COMMITED 的原理:
- 事务对当前被读取的数据加 行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁;
- 事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级排他锁,直到事务结束才释放。
表现:
- 事务1读取某行记录时,事务2也能对这行记录进行读取、更新;当事务2对该记录进行更新时,事务1再次读取该记录,读到的只能是事务2对其更新前的版本,要不就是事务2提交后的版本。
- 事务1更新某行记录时,事务2不能对这行记录做更新,直到事务1结束。
REPEATABLE READ 的原理:
- 事务在读取某数据的瞬间(就是开始读取的瞬间),必须先对其加 行级共享锁,直到事务结束才释放;
- 事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级排他锁,直到事务结束才释放。
表现:
- 事务1读取某行记录时,事务2也能对这行记录进行读取、更新;当事务2对该记录进行更新时,事务1再次读取该记录,读到的仍然是第一次读取的那个版本。
- 事务1更新某行记录时,事务2不能对这行记录做更新,直到事务1结束。
SERIALIZABLE 的原理:
- 事务在读取数据时,必须先对其加 表级共享锁 ,直到事务结束才释放;
- 事务在更新数据时,必须先对其加 表级排他锁 ,直到事务结束才释放。
表现:
- 事务1正在读取A表中的记录时,则事务2也能读取A表,但不能对A表做更新、新增、删除,直到事务1结束。
- 事务1正在更新A表中的记录时,则事务2不能读取A表的任意记录,更不可能对A表做更新、新增、删除,直到事务1结束。
数据库隔离离别及加锁原理相关推荐
- 数据库隔离级别及实现原理
事情的起源于一个面试,面试官让我说说数据库的隔离级别,以及他们各自对应着什么问题,这个还好说,说出来后他接着追问readcommited的原理,当时楞了一下,因为的确没接触过,虽然知道肯定是锁的作用, ...
- 数据库隔离级别 及 其实现原理
1.脏读 脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据. 2.不可重复读 不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一 ...
- 数据库隔离级别及原理
数据库的隔离级别是通过共享锁和排他锁实现的.锁又可以分为表锁,页锁,行锁 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committed.Repeatable ...
- 数据库隔离级别实现原理
昨晚和以为前辈聊天,聊到Mysql的引擎innodb默认的事务隔离级别是REPEATABLE READ(可重复读):在Oracle中默认的事务隔离级别是提交读(read committed).那么,问 ...
- mininet编程实现交换机规则的插入、删除与修改。_Mysql事务隔离以及MVCC实现原理...
上一篇我们了解了mysql的几种日志,大致知道这些日志的作用,今天我们配合Mysql的事务以及事务的隔离级别进一步理解mysql如何实现事务相关的特性.其中重点理解mysql innodb的多版本控制 ...
- 触发死锁怎么办?MySQL 的死锁系列:锁的类型以及加锁原理了解一下!
来源 | 程序员历小冰 责编 | Carol 封图 | CSDN 付费下载于视觉中国 疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插 ...
- 15张图呈现数据库事务背后的并发原理
本文分享自华为云社区<将数据库9种锁.3种读.4种隔离级别一次性串联起来,用15张图呈现背后数据库事务背后的并发原理>,作者: breakDawn. 前段时间开发时,正好遇到了2个进程同时 ...
- 详解数据库的锁机制及原理
详解数据库的锁机制及原理 1.数据库锁的分类 2.行锁 共享锁(读锁S锁) 排他锁(写锁X锁) 更新锁 3.意向锁(IX/IS锁) 4.锁机制解释数据库隔离级别 5.元数据锁(MDL锁) 6.间隙锁 ...
- 【mysql】数据库隔离级别read uncommitted篇
1.目的 1.1 合适人群 1.数据库事务特征我只是背过,并没有很深刻的理解. 2.数据库事务的隔离级别只是了解,并没有深刻理解,也没有在实际工作中体验使用过. 3.经常面试被人问起数据库加锁情况,一 ...
最新文章
- 虚拟化基础架构Windows 2008篇之12-WSUS工作站端配置
- 【Spring框架家族】mybatis generator代码自动生成(看得上眼直接拿去用即可)
- JZOJ__Day 1:【NOIP普及模拟】JABUKE
- 安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti
- 深入理解javascript原型和闭包 1
- matlab中input输入多个数_python怎么一次输入两个数
- 为什么世界上没有安全的工作
- 增加批量修改成本价格,配合后台管理增加成本价和毛利润统计
- arm linux驱动 知乎_引导 ARM Linux
- 【STC15】串口使用
- 织梦采集插件自动图片本地化提升内容原创度
- 在 Vue2 中引入高德地图和三维模型
- 自抗扰控制中的扩张状态观测器收敛性分析3
- python打开xls_python读取XLS文件或CSV文件
- 【C++】引用以及关联函数(详解)
- 移动端h5网页调用支付宝支付接口
- ant modal 修改样式 style
- Word美化代码块样式
- krait和kryo_为什么现在高通的kryo架构只是在arm公版架构基础上小修小补?
- python异常捕获和写到mysql_python捕获数据库异常