03-MySQL事务
2022/9/18 2:16:12
本文主要是介绍03-MySQL事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据库事务
1、事务特性
1.1、原子性
- 即不可分割性,事务要么全部被执行,要么就全部不被执行
1.2、一致性
- 事务的执行使得数据库从一种正确状态转换成另一种正确状态
1.3、隔离性
- 在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务
1.4、持久性
- 事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存
2、隔离级别
2.1、读未提交
- 在该隔离级别,所有的事务都可以读取到别的事务中未提交的数据,会产生脏读问题,在项目中基本不怎么用,安全性太差
2.2、读已提交
- 这是大多数数据库默认的隔离级别,但是不是MySQL的默认隔离级别
- 这个隔离级别满足了简单的隔离要求,即一个事务只能看见已经提交事务所做的改变,所以会避免脏读问题
- 由于一个事务可以看到别的事务已经提交的数据,于是随之而来产生了不可重复读和虚读等问题
2.3、可重复读
- 这是MySQL的默认隔离级别,它确保了一个事务中多个实例在并发读取数据的时候会读取到一样的数据
- 不过理论上,这回导致另一个棘手的问题:幻读(Phantom Read),简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现又新的“幻影”行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC, Multiversion Concurrency Control)机制解决了该问题
2.4、可串行化
- 事务的最高级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是再每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争,一般为了提升程序的吞吐量不会采用这个
这篇关于03-MySQL事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享
- 2024-02-22docker mysql 5.7
- 2024-02-18从 20 多套 MySQL 到 1 套 TiDB丨骏伯网络综合运营管理平台应用实践
- 2024-02-07mysql 外键索引入门介绍,为什么工作中很少有人使用?