MySQL系列之二四种隔离级别及加锁
事务
1、定义:所有操作必须成功完成,否则在每个操作中所作的所有更改都会备撤销。
2、事务的ACID
原子性atomicity 一致性consistency 隔离性isolation 持续性durability
2-1、原子性: 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
2-2、一致性: 事务执行的结果必须是数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,
就说明数据库处于一致性状态。
2-3、隔离性: 一个事务的执行不能被其他事务干扰。
2-4、持续性: 即永久性,一个事务一旦提交,它对数据库中数据的改变就应该是永久行的。
3、MySQL的四中隔离级别
3-1、read uncommitted(读取未提交的内)
所有事务都可以看到其他未提交事务的执行结果。 也称之为脏读,很少应用与实际
3-2、read committed(读取提交内容)
一个事务只能看见已提交事务所做的改变。
3-3、repeatable read(可重复读)
MySQL默认事务隔离级别,确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过,会导致幻读。
幻读指用户读取某一范围数据行时,另一个事务又在该范围内插入了新行。当用户再读取该范围的数据行时,会发现出现新的幻影行
3-4、serializable(可串行化)
在每个读的数据行上加上共享锁。这个级别可能导致大量的超时现象和锁竞争。
4、事务隔离的原理
1、一次封锁or两段锁
在大量并发访问时候,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,
然后全部锁住,在方法运行之后,在全部解锁。但这种方式不适用于数据库,因为数据库不知道会用到哪些数据。
数据库采用的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段。
加锁阶段: 在对任何数据进行读操作之前要申请并获得S锁(共享锁,其他事务可以继续加共享锁,但不能加排它锁),在进行写
操作之前要申请X锁(排它锁,其他事务不能再获得任何锁)。如果加锁不成功的话,则事务进入等待状态,直到加锁成功才能继续执行。
解锁阶段: 当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再解析加锁操作。
不可重复读与幻读的区别:
不可重复读重点在于update和delete,而幻读在于insert
5、mvcc在MySQL的innodb实现
在innodb中,会在每行数据后添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另一个记录这行
数据何时过期(或者被删除)在实际操作中,存储的并不是时间,而是事务的版本号,每开启一个新事务,事务的版本号就会
递增。在可重复读的事务隔离级别下:
select时,读取创建版本号不大于当前事务版本好,删除版本号为空或大于当前事务版本号
insert时,保持当前事务版本号为行的创建版本号
delete时,保持当前版本号为行的删除版本号
update时,插入一条新记录,保存当前事务版本号为行创建的版本号,同时保持当前事务版本号到原来删除的行
MySQL系列之二四种隔离级别及加锁的更多相关文章
- MySQL数据库中的四种隔离级别
事务的隔离性比想象的要复杂,在 SQL 标准中定义了四种级别的隔离级别.通常而言,较低级别的隔离通常可以执行更高的并发,系统的开销也更低 READ UNCOMMITTED 该级别为未提交读.在该级别中 ...
- mysql四大特性与四种隔离级别
四大特性 1:原子性.事务是一个不可分割的整体,事务开始的操作,要么全部执行,要么全部不执行. 2:隔离性.同一时间,只允许一个事务请求同一组数据.不同的事务彼此之间没有干扰. 3:一致性.事务开始前 ...
- MySql四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- 面试问烂的 MySQL 四种隔离级别,看完吊打面试官!
阅读本文大概需要 5.6 分钟. 来源:网络 什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操 ...
- 【转载】mysql 四种隔离级别分析
sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mys ...
- MySQL 四种隔离级别
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有 ...
- SQL事务的四种隔离级别和MySQL多版本并发控制
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的那些改变时可见的,那些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. ReadUncommitted( ...
- 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别
1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...
- 简单理解:数据库的一致性与四种隔离级别(+MySQL实现)
并行数据库存在着几种常见不一致问题: 1.更新丢失:两个并发的写进程同时修改某内容,一个没修改完提交之后另一个又提交,导致其覆盖了第一个提交的写进程内容. 2.脏读:一个操作读到了另外一个操作没有提交 ...
随机推荐
- Webstorm软件快捷键
默认配置-Eclipse的常用快捷键对照表 查找/代替 Webstorm快捷键 Eclipse快捷键 说明 ctrl+shift+N ctrl+shift+R 通过文件名快速查找工程内的文件(必记) ...
- web css
CSS圆角——透明圆角化背景图片 序言:第一章中我介绍了最基本的纯CSS圆角框的实现原理,并给出Demo,在本章中会对上一个模型作一些新的创新,实现将背景图片透明圆角化.并给出一些漂亮的通用演示效果. ...
- sqlserver连接-2
本地连接 方法1. 方法2. 远程连接 如果无法通过IP地址远程连接你的SQL Server 2008服务器,可以参考下面的内容进行设置. 在进行下述设置之前,应该确保你的网络已经安装设置完毕,服务器 ...
- 【JavaScript】DOM之事件
DOM 事件 1.事件是什么 让JS知道程序用户行为,比如用户点击HTML页面中的某个按钮和用户输入用户名与密码等操作 <script> var button = document.get ...
- 服务器在没有request请求时是什么状态
服务器,例如web服务器,在没有接受到request请求时,它是一种什么状态? 是监听状态,就像电灯泡在没通电的时候,没法光,灯泡不会不停的问电线有电吗?有电吗?而是电来了,状态就发生了改变! 服务器 ...
- selenium 访问网页抛出ElementNotVisibleException异常
问题描述: 在使用selenium时遇到如下异常导致程序终止: selenium.common.exceptions.ElementNotVisibleException: Message: {&qu ...
- spring-cloud eureka注册发现
idea新建一个eureka server服务 application.yml 配置: spring: application: name: eureka-server server: port: 7 ...
- JS-Number 的精度
JS 使用 IEEE 754 的双精度数表示数字,1 位符号,10 位指数,53 位底数. 所以 JS 数字精度近似为 15.95 位 10 进制(10 ** 15.95). 也就是说整部加小数部分超 ...
- nginxUbuntu安装Nginx和正确卸载Nginx Nginx相关 与Nginx报错:nginx: [error] invalid PID number "" in "/run/nginx.pid" 解决方法
https://www.cnblogs.com/zhaoyingjie/p/6840616.html https://blog.csdn.net/adley_app/article/details/7 ...
- http代理工具delphi源码
http://www.caihongnet.com/content/xingyexinwen/2013/0721/730.html http代理工具delphi源码 以下代码在 DELPHI7+IND ...