首页 网维知识库 MySQL 事务隔离级别

MySQL 事务隔离级别

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

前言

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

隔离性与隔离级别

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

读未提交

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

客户端A
start transaction;
update users set name = 'hello' where id = 1;
select * from users where id = 1; #此时可以读到 name,更新为hello
客户端B
start transaction;
select * from users where id = 1; #此时读到 name为hello

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

读提交

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

客户端A
start transaction;
update users set name = 'hello' where id = 1;
commit;
客户端B
start transaction;
select * from users where id = 1; #此时 name不为hello
#此时客户端A 完成 commit
select * from users where id = 1; #此时 name为hello

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

可重复读

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

客户端A
start transaction;
select * from users;  #为空
#此时客户端B 完成commit 操作
select * from users;  #还是为空
insert into users(id, name) value (1, 'hello') #报主键冲突
客户端B
start transaction;
select * from users; #为空
insert into users(id, name) values (1, 'hello');
commit;

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

串行化

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

客户端A
start transaction;
insert into users(id, name) values (1, 'hello');
commit;
客户端B
start transaction;
select * from users; #会一直堵塞住,直到客户端A 完成提交
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 3182235786a

为您推荐

windows8

windows8

Windows 8 是微软公司于 2012 年推出的一款操作系统,因其独特的界面设计和功能受到广泛关注。本文将从 Win...
Windows 下载指南:获取最新版本的 Windows 操作系统

Windows 下载指南:获取最新版本的 Windows 操作系统

作为全球最受欢迎的操作系统之一,Windows 提供了丰富的功能和用户友好的界面。如果您想获取最新版本的 Windows...
windows资源管理器已停止工作

windows资源管理器已停止工作

Windows 资源管理器已停止工作是 Windows 操作系统中常见的一个问题,通常表现为资源管理器窗口无法正常打开或...
Windows 10 激活方法详解:轻松激活您的操作系统

Windows 10 激活方法详解:轻松激活您的操作系统

购买了全新的Windows 10操作系统后,如何激活它成为许多用户关注的问题。本文将为您详细介绍Windows 10的激...
windows10激活工具

windows10激活工具

Windows 10 激活工具是一款用于激活 Windows 10 操作系统的软件。通过使用激活工具,用户可以轻松地激活...

发表回复

返回顶部