数据库事务

事务:是数据库管理系统的执行单元,可以是一个数据库操作或者一组数据库操作序列。
事务的ACID属性,原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持续性(Durability)。

原子性:事务中所有的数据库操作要么全部成功,要么全部失败。如现实生活中的转账操作。
一致性:保证数据库数据始终一致(事务操作前,事务操作后)。
隔离性:多个事务并发执行的结果应该和串行执行的效果是一致的。显然最简单的隔离就是将所有的事务都串行执行,先来的先执行,但是这样子效率会很低下。如果多个事务只是读取同一批数据,完全可以并发进行。为了控制并发执行的效果就有了不同的隔离级别。
持续性:事务对数据库的影响应该是持久的,即使数据库因故障收到破坏,也能进行恢复。

隔离级别(transaction isolation level),对事务并发控制的等级。分为串行化(Serializable),可重复读(Repeatable Read),读已提交(Read Committed),读未提交(Read Uncommitted)。

测试读未提交
数据库事务

客户端1
数据库事务

客户端2
数据库事务

在“读未提交”隔离级别下,也会存在幻读(Phantom Read),即客户端2第二次查询之前,客户端1插入了一条新的记录,客户端2第二次查询的时候就会将这条幻影数据显示出来。

测试读已提交
客户端1
数据库事务

客户端2
数据库事务

测试可重复读
客户端2
数据库事务

测试串行化
客户端1
数据库事务

客户端2
数据库事务

你可能感兴趣的:(事务,隔离级别)