面试题答案
一键面试1. 读未提交(Read Uncommitted)
- 事务隔离描述:一个事务可以读取另一个未提交事务的数据。这是最低的隔离级别,存在脏读问题。
- 对事务四大性质影响:
- 原子性:不影响,原子性强调事务内操作要么全部成功,要么全部失败,读未提交隔离级别不涉及事务内操作的完整性问题。
- 一致性:可能破坏一致性。因为能读到未提交数据,如果未提交事务回滚,读取到的数据就是无效的,可能导致业务数据不一致。
- 隔离性:隔离性差,多个事务之间几乎没有隔离,一个事务的中间状态数据能被其他事务读取。
- 持久性:不影响,持久性指事务提交后,对数据的修改是永久性的,读未提交不涉及事务提交后数据的持久化问题。
2. 读已提交(Read Committed)
- 事务隔离描述:一个事务只能读取已提交事务的数据,解决了脏读问题,但可能存在不可重复读问题。
- 对事务四大性质影响:
- 原子性:不影响,同样原子性与事务内操作完整性相关,与读已提交隔离级别无关。
- 一致性:相比读未提交有所增强。由于只能读到已提交数据,数据相对更可靠,一致性更易保证,但由于不可重复读问题,一致性仍可能受影响。
- 隔离性:比读未提交好,事务间有一定隔离,只能读取已提交数据,但同一事务内多次读取可能得到不同结果。
- 持久性:不影响,持久性不受读已提交隔离级别影响。
3. 可重复读(Repeatable Read)
- 事务隔离描述:在同一个事务内多次读取相同数据时,返回的结果是一致的,解决了不可重复读问题,但可能存在幻读问题。
- 对事务四大性质影响:
- 原子性:不影响,事务原子性不受可重复读隔离级别影响。
- 一致性:进一步增强。通过保证同一事务内数据读取一致性,减少了数据不一致风险,但幻读仍可能影响一致性。
- 隔离性:较好,同一事务内读取数据不受其他事务提交影响,事务间隔离性较好,但仍可能出现幻读。
- 持久性:不影响,持久性与可重复读隔离级别无关。
4. 串行化(Serializable)
- 事务隔离描述:最高的隔离级别,事务串行执行,避免了脏读、不可重复读和幻读问题。
- 对事务四大性质影响:
- 原子性:不影响,事务原子性不受串行化隔离级别影响。
- 一致性:能很好保证一致性。由于事务串行执行,不存在并发带来的数据不一致问题。
- 隔离性:达到最强隔离,事务间完全隔离,不存在并发干扰。
- 持久性:不影响,持久性不受串行化隔离级别影响。