Mysql 事务ACID特性及事务隔离级别
From High Performance Mysql
ACID 特性
- 原子性 Atomicity
一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中一部分操作。 - 一致性 Consistency
数据库总是从一个一致性状态转换到另一个一致性状态。 - 隔离性 Isolation
通常来说,一个事务所做的修改在最终提交之前,对其他事务是不可见的。 - 持久性 Durability
一旦事务提交,则其所做的修改就会永久存储到数据库中。
事务隔离级别
- 未提交读 Read Uncommited
事务中的修改,即使没有提交,对其他事务也是可见的,有时也被称为脏读。 - 提交读 Read Commited
一个事务开始时,只能看见已经提交的事务所所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他任何事务都是不可见的。有时也称之为不可重复读, 因为两次执行同样的查询,可能会得到两种不同的结果。 - 可重复读 Repeatable Read
该级别能够解决脏读的问题,保证了在同一个事务中多次读取同样的记录结果是一致的。该级别是mysql的默认隔离级别 - Serializable
最高隔离级别,通过事务串行执行,避免了前面说的所有的问题。