Transaction 事务
数据库问题
问题 |
说明 |
备注 |
脏读 |
脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。 |
|
不可重复读 |
不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。 |
|
幻读 |
幻读是事务非独立执行时发生的一种现象。例如事务 T1 对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务 T2 又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务 T1 的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务 T2 中添加的,就好像产生幻觉一样,这就是发生了幻读。 |
|
数据库事务的隔离级别
隔离级别 |
说明 |
备注 |
Read uncommitted (读未提交) |
最低级别,任何情况都无法保证。 |
|
Read committed (读已提交) |
可避免脏读的发生。 |
|
Repeatable read (可重复读) |
可避免脏读、不可重复读的发生。 |
|
Serializable (串行化) |
可避免脏读、不可重复读、幻读的发生 |
|
四大特性 (ACID)
特性 |
说明 |
备注 |
A Atomicity 原子性 |
|
|
C Consistency 一致性 |
|
|
I Isolation 隔离性 |
|
|
D Durability 持久性 |
|
|
事务的控制