数据库中的事务需要满足ACID的特性:
原子性( atomicity) :一个 事务必须被视为一个不可分割的最小工作单元,要么完在,要么回滚。
一致性( consistency):数据库 总是 从一个 一致性的状态转换到另外 一个 一致性的状态。和原子性相似,一致性是靠原子性保障的。一致性=原子性+逻辑。
隔离性( isolation) 通常 来说, 一个事务所做的修改, 对其他事务是不可见性。
持久性(durability):一旦事务提交, 则其所做的修改就会永久保存到数据库 中。 此时即使系统崩溃, 修改的数据也不会 丢失。
mysal 的InnoDB存储引擎支持以下四种数据库隔离级别:
- READ UNCOMMITTED( 未提交读)
一个事务可以读到其他事务末提交的数据,称之为脏读。
- READ COMMITTED( 提交读)
一个事务可以读到其他事务对原有记录修改的数据,称之为不可重复读,即对同一条纪录的两次查询,内容不一致。
- REPEATABLE READ( 可重复读)(mysql innoDB默认隔离级别 ,通过间隙锁来解决幻读问题)
一个事务可以读到其他事务对表的增加与删除数据,称之为幻读,即对一个范围的查询,两次查出来的条数不同。
-
SERIALIZABLE( 可 串行 化)
一个事务中所有查出来的数据一致。