首页 运维干货MySQL 事务隔离级别

MySQL 事务隔离级别

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

MySQL 事务隔离级别插图

前言

简单来说,数据库事务就是保证一组数据操作要么全部成功,要么全部失败。在 MySQL 中,事务是在引擎层实现的。原生的 MyISAM 引擎不支持事务,也是为什么 InnoDB 会取代它的重要原因之一。

隔离性与隔离级别

当数据库上有多个事务同时执行的时候,根据隔离级别的不同,可能会出现脏读、幻读和不可重复读。标准隔离级别包括读未提交、读提交、可重复读和串行化。

读未提交

如果用这种隔离级别,事务执行的时候会读到其他未提交事务的数据,我们称为脏读。

在此隔离级别下,客户端 B 读到了客户端 A 还未提交的事务即还未 commit 的事务,即产生的脏读现象。

读提交

如果用这种隔离级别,事务执行的时候会读到其他已提交事务的数据,我们称为不可重复读。

在此隔离级别下,客户端 B 读到了客户端 A 完成提交的事务,产生了不可重复读现象。

可重复读

在同一个事务里,SELECT 语句获得的结果是基于事务开始时间点的状态,同一个事务中 SELECT 语句得到的结果是一样的,但是会有幻读现象。

在此隔离级别下,会产生幻读现象。

串行化

在该事务级别下,事务都是串行顺序执行的,避免了脏读,不可重复读,幻读问题。

原文链接:https://segmentfault.com/a/1190000023085634

本文链接:http://www.yunweipai.com/36489.html

网友评论comments

发表评论

电子邮件地址不会被公开。

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部