数据库事务
事务特性
-
原子性
不可分割的最小工作单元
-
一致性
数据库总是从一个一致性的状态转换到另一个一致性的状态
-
隔离性
一个事务所做的修改在最终提交以前,对其他事务是不可见的
-
持久性
一旦事务提交,其所做的修改就会永久保存到数据库中
隔离级别
-
READ UNCOMMITED
(未提交读)事务中的修改,即使没有提交,对其他事务也是可见的.事务可以读取未提交的数据,成为
脏读
-
READ COMMITED
(提交读)一个事务从开始直到提交之前,所做的任何修改对于其他事务都是不可见的.
-
REPEATABLE READ
(可重复读)在同一个事务中多次多去同样记录的结果是一致的.可重复读隔离级别无法解决幻读(当某个事务在读取某个范围内的记录时,另一个事务又在改方位内插入了新的记录,之前的事务再次读取该范围内的记录时,会产生幻行.InnoDB和XtraDB存储引起通过多版本并发控制解决了幻读问题)
-
SERIZLIZABLE
(可串行化)最高的隔离级别,通过强制事务串行执行,会在读取的每一行数据上都加锁.
隔离级别 | 脏读 | 不可重复读 | 幻读 | 加锁读 |
---|---|---|---|---|
READ UNCOMMITED | Y | Y | Y | N |
READ COMMITED | N | Y | Y | N |
REPEAPTBALE READ | N | N | Y | N |
SERIALIZABLE | N | N | N | Y |