栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL事务、隔离级别、脏读幻读不可重复读

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL事务、隔离级别、脏读幻读不可重复读

MySQL事务、隔离级别、脏读幻读不可重复读

事务

事务的ACID特性mysql的4种事务隔离级别什么是脏读什么是不可重复读什么是幻读

事务

数据库事务是指对数据库执行一批操作。这些操作要么全部执行成功,要么全部执行失败。

在MySQL中,InnoDB引擎支持事务,而MyIsam引擎则不支持。

事务的ACID特性

A–原子性:事务中的所有操作,要么都做,要么都不做。

C–一致性:事务执行的结果必须是使数据库从一个一致性状态,变到另一个一致性状态。

I–隔离性:一个事务的执行不能被其他事务干扰。

D–持久性:一个事务一旦提交,它对数据库中数据的改变是永久性的。

mysql的4种事务隔离级别

1、读未提交

所有事务可以看到其他未提交事务的执行结果。容易出现脏读。

2、读已提交

事务只能看见已提交事务所做的改变。可能出现不可重复读。

3、可重复读

mysql的默认隔离级别。它避免了不可重复读的问题,但可能出现幻读。

4、串行化

最高的隔离级别,完全服从ACID特性的隔离级别。但是性能很差,可能导致大量超时。

隔离级别脏读不可重复读幻读
读未提交可能可能可能
读已提交不可能可能可能
可重复读不可能不可能可能
串行化不可能不可能不可能
什么是脏读

一个事务读取了另一个事务还没有提交的数据。

如:事务T1修改了某个数据,但未提交。这时,事务T2读取了事务T1修改后的数据。

然后,事务T1由于某种原因回滚了。那么,事务T2读取的数据就是脏的。

解决办法:提高隔离级别。

什么是不可重复读

指在同一事务内,两次相同的查询返回的是不同的结果。

如:事务T1会读取同一数据两次。在事务T1第1次读取该数据后,事务T2修改了该数据并提交。

此时,事务T1第2次读取该数据,两次读取便得到了不同的结果。

解决办法:提高隔离级别。

什么是幻读

当事务不独立执行时,不同事务对同一部分数据进行插入和删除而发生的一种类似幻觉的现象。

如:事务A将表中的所有数据都删除后。此时事务B插入了一条新记录并提交。

事务A在删除结束后发现表中还有一条数据,就好像出现幻觉一样。

解决办法:仍然是提高隔离级别。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号