文档章节

MySQL 事务隔离级别

叶易
 叶易
发布于 2016/08/22 18:17
字数 540
阅读 52
收藏 3

mysql 事务隔离级别

read-uncommitted(未提交读)

测试流程:

  • 1、A设置read-uncommitted, start transaction
  • 2、B执行start transaction,修改一条记录,
  • 3、A查询记录,得到了以为正确的记录
  • 4、B回滚。

问题:A读到了B没有提交的记录,也就是脏读。

** read-committed(已提交读)**

测试流程:

  • 1、A设置read-committed, start transaction
  • 2、B执行start transaction,修改一条记录,查询记录,记录已经修改成功
  • 3、A查询记录,结果还是老的记录
  • 4、B提交事务
  • 5、A再次查询记录,结果是新的记录。

问题:解决了脏读的问题,但是出现一个新问题,A在一个事务中,两次读取的记录不一致,也就是不可重复读。

repeatable-read(可重复读)

测试流程:

  • 1、A设置repeatable-read, start transaction,查询记录,结果是老的记录
  • 2、B执行start transaction,修改一条记录,查询记录,记录已经修改成功
  • 3、A查询记录,结果还是老的记录
  • 4、B提交事务
  • 5、A再次查询记录,结果还是老的记录。

问题:可以重复读,A在事务过程中,即使B修改了数据,并且commit,A读取的还是老的数据。实际上是A读取的数据还是事务开始时的快照。 注意:这里可能会存在一个新的问题,A在事务过程中,B增加一条记录,并提交,导致A的两次读取不一致,会多一条记录,也就是幻影读。这里只是可能,具体取决于数据库的实现。mysql的repeatable-read实现,不会导致幻影读。

serializable(可串行化) 测试流程:

  • 1、A设置serializable, start transaction,查询记录,结果是老的记录
  • 2、B执行start transaction,修改一条记录,B卡在这里,要等待A完成才行。
  • 3、A查询记录,结果还是老的记录,A提交。
  • 4、B的修改操作才进行下去。

注意:B在等待过程中,会出现lock超时。这种情况,存在性能问题,因为要一个一个来。

© 著作权归作者所有

叶易
粉丝 22
博文 24
码字总数 30959
作品 0
无锡
私信 提问
Mysql数据库理论基础之九---四类隔离级别

一、简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1、是一种数据库管理系统 2、是一种关联数据库管理系统 3、是一种开放源码软件,且有大量可用的共享MySQL软...

风过_无痕
2017/06/10
0
0
mysql 4种事务隔离级别

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(...

蛋定龙
2015/10/23
343
1
mysql乱七八糟的可重复读隔离级别实现

mysql的隔离级别并非是按照标准实现的,作为从pg切过来的程序员还真是不太适应,这篇文章讨论mysql隔离级别实现的,希望对大家能有帮助。 什么是事务 事务是数据库一组读写操作的集合,事务具...

徐文韬
2017/09/11
0
0
MySQL · 源码分析 · InnoDB Repeatable Read隔离级别之大不同

开始介绍之前,先让我们了解一些基本概念。ANSI SQL STANDARD定义了4类隔离级别(READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE),包括了一些具体规则,用来限定事务内外...

阿里云RDS-数据库内核组
2017/06/08
0
0
MySQL MVCC && 事务隔离级别 && 锁

MySQL MVCC && 事务隔离级别 && 锁 InnoDB多版本并发控制——MVCC http://my.oschina.net/xinxingegeya/blog/208821 MySQLS锁X锁read lockwrite lock http://my.oschina.net/xinxingegeya/bl......

秋风醉了
2014/07/30
583
0

没有更多内容

加载失败,请刷新页面

加载更多

75、GridFS

GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用Mongo DB存储数据,使用FGridFS可以快速集成开发。 工作原理: 在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个...

lianbang_W
36分钟前
4
0
js bind 绑定this指向

本文转载于:专业的前端网站➱js bind 绑定this指向 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>bind函数绑定this指向......

前端老手
39分钟前
4
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
46分钟前
4
0
深入vue-公司分享ppt

组件注册 全局注册 注册组件,传入一个扩展过的构造器 Vue.component('my-component', Vue.extend({/*...*/})) 注册组件,传入一个选项对象(自动调用Vue.extend) Vue.component('my-comp...

莫西摩西
47分钟前
4
0
gitlab重置管理员密码

登录gitlab服务器 [root@localhost bin]# sudo gitlab-rails console productionLoading production environment (Rails 5.2.3)irb(main):001:0> u = User.where(email: 'admin@example.co......

King华仔o0
57分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部