码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 隔离级别

时间:2018-01-05 20:49:30      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:版本   ima   不可重复读   mysq   标准   产生   重复   ros   family   

  SQL标准定义了4种隔离级别。较低级别的隔离可以执行更高的并发,系统的开销也更低。

  read uncommitted(未提交读)

  事务可以读取未提交的数据,称为脏读。很少使用。

  read committed(提交读)

  大多数数据库系统的默认事务隔离级别都是它,但MySQL不是。一个事务从开始直到提交之前,所做的修改对其他事务是不可见的。它有时候也称为不可重复读,因为两次执行相同的查询,可能会得到不同的结果。

  repeatable read(可重复读)

  是MySQL的默认事务隔离级别,保证在同一个事务中执行相同的查询结果一致,解决了脏读的问题。但是它无法解决幻读的问题。幻读指的是当一个事务在读取了某个范围内的记录后,另外一个事务在该范围内插入了新的记录,则之前的事务再次读取该范围的记录时会产生幻行。InnoDB存储引擎通过多版本并发控制解决了幻读的问题。

  serializable(可串行化)

  是最高的隔离级别,通过强制事务串行执行,避免了幻读问题。简单地说,它会在读取的每一行数据上都加锁,会导致大量的超时和锁争用的问题。很少使用。

  汇总表如下:

  技术分享图片

  

  参考资料

  《高性能MySQL》 P8-9

MySQL 隔离级别

标签:版本   ima   不可重复读   mysq   标准   产生   重复   ros   family   

原文地址:https://www.cnblogs.com/WJQ2017/p/8206594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!