文章目录
ACID
原子行(atomicity)
一个事务中的所有操作要么全成功,要么全部失败回滚
一致性(consistency)
从一个一致性状态转到另一个一致性的状态
在事务执行过程中出现系统崩溃等状态,表中信息也不会有所改变,因为没有被提交
隔离性(isolation)
当一个事务所做的修改在最终提交以前,对其他事务是不可见的。
持久性(durability)
当事务一旦被提交,就会永久的保存在数据库中
隔离级别
READ UNCOMMITTED(未提交读/脏读)
在该级别中,对事务中的内容进行修改,即使是没有提交,对其他事务也都是可见的,这样会出现脏读的情况
READ COMMITTED(提交读/不可重复读)
一个事务开始时,只能“看见”已经提交的事务所做的修改
例如一个事务A开始读某一个表是一条数据,另一个事务B对这个表增加一条数据,并且提交。这时事务A再查找会发现两条数据。那么第一个事务A两次读到的的数据可能是不一样的,因此称为是不可重复读
REPEATABLE READ(可重复读)
该级别保证了在同一个事务中多次读取同样记录的结果是一致的
SERIALIZABLE(可串行化)
最高级别,通过强制事务串行执行,避免了幻读,会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用问题
隔离级别 | 脏读可能性 | 不可重复读可能性 | 幻读可能性 | 加锁读 |
---|---|---|---|---|
READ UNCOMMITTED | yes | yes | yes | no |
READ COMMITTED | no | yes | yes | no |
REPEATABLE READ | no | no | yes | no |
SERIALIZABLE | no | no | no | yes |