- 事务的ACID概念
- 原子性(atomicity)
- 一致性(consistency)
- 隔离性(isolation)
- 持久性(durability)
- 脏读
- 不可重复读
- 幻读(和不可重复读几乎一致,只是这个是新增)
- 四大隔离级别
- READ UNCOMMITTED(读未提交)
- READ COMMITTED(读提交)
- REPEATABLE READ(可重复读)MYSQL默认的隔离级别
- SERIALIZABLE(串行化)
一个事务必须被视为一个不可分割的最小工作单位(也就是一个整体)
一致性(consistency)数据库总是从一个一致性的状态转换到另一个一致性的状态(也就是一组组操作同时成功或同时失败)
隔离性(isolation)一个事务所做的修改在提交以前,对其他事务不可见(每一个操作相互独立)
持久性(durability)一旦事务提交,则所做修改会永久保存到数据库中
脏读事务可以读取到没有提交的数据(简单来讲其实就是A事务正在编辑数据,事务还没有提交,但是B事务可以读取到他编辑的数据)
不可重复读两次执行同样的查询,可能会得到不一样的结果(简单来说事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了)
幻读(和不可重复读几乎一致,只是这个是新增)指的是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的数据,当之前的事务再次查询该范围时会产生幻行。
四大隔离级别 READ UNCOMMITTED(读未提交) READ COMMITTED(读提交) REPEATABLE READ(可重复读)MYSQL默认的隔离级别 SERIALIZABLE(串行化)是最高的隔离级别,它通过强制事务串行化执行,避免了前面说的所有问题,简单来说它会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用问题。



