事务特性及隔离级别

一、事务特性

1. 原子性

事务的原子性即需保证事务是一个原子操作,要么全部成功一起提交,要么全部失败一起回滚,一个事务不可能之完成其中的一部分

2. 一致性

事务的一致性,即数据库总是从一个一致性状态转换到另一个一致性状态,即不论发生异常或者是机器故障等,事务若没有最终提交,事务中所已经执行语句也不会对数据库产生影响

3. 隔离性

一个事务提交成功之前所作的操作,对其他事务是不可见的

4. 持久性

一旦事务成功提交,其对数据库数据所做的修改就会永久保存到数据库中

二、隔离级别

1. 未提交读(READ UNCOMMITTED)

事务中所执行的操作,即使未提交,也对其他事务可见(事务可以读取其他事务未提交的事件,成为脏读)

2. 提交读(READ COMMITTED)

一个事务中,看不到其他事务未提交前的所做的修改,但其他事务一旦提交,本事务中就会对其修改可见。因此,当你在一个事务中执行相同的查询操作,可能会得到不同的查询结果(中间有修改所查数据的事务提交成功),称为不可重复读

3. 可重复读(REPEATABLE READ)

可重复读是mysql中默认的隔离级别,决解了脏读的问题,该级别保证一个事务中多次相同查询的结果不变。但又产生了新的问题“幻读”,即其他事务在本事务查询范围内又重新插入数据,此时就会产生幻读,即查询结果会多出新插入数据。Innodb通过mvcc决解了这个问题

4. 可串行化(SERIALIZABLE)

最高的隔离级别,事务串行化执行,决解了幻读的问题,但对性能产生了极大的影响

发布了17 篇原创文章 · 获赞 1 · 访问量 646

猜你喜欢

转载自blog.csdn.net/c_c_y_CC/article/details/104620511