数据库面试知识整理
事务
概念和四大特性
事务是指一组操作,拥有四大特性:原子性、一致性、隔离性、连续性(也称ACID特性)。
可以通过commit提交一个事务,也可以使用rollback回滚。
- 原子性(Atomicity):事务被视为不可分割的最小单元,要么全部commit成功,要么全部失败rollback;
- 一致性(Atomicity):在事务前后保持一致性状态。在一致性状态下所读的所有数据都是一样的。
- 隔离性(Isolation):事务的修改在最终提交之前对其他事务不可见
- 连续性(Durability):一个事务一旦提交,那么所做的修改永远保存
四大特性之间的关系:
- 连续性:用于应对系统崩溃情况
- 在无并发情况下,自动满足了隔离性(只有一个事务),因此需要满足原子性才能保证一致性
- 在并发情况下,需要同时满足隔离性和原子性来保证一致性
并发一致性
- 丢失修改:一个事务提交的更新操作被另一个事务的更新操作覆盖
- 读脏数据:一个事务读取了另一个事务还未提交的修改
- 不可重复读:一个事务读取数据之后在操作期间,另一个事务对其进行了访问和修改,此时事务1再读取时,数据与初始的不一致
- 幻影读:也是不可重复读的一种。一个事务在读取某个范围的数据之后并在操作期间,另一个事务对该区间进行了操作,那么事务1再次读取该区间就与初始的不一致
因此需要在事务操作时候进行进行一些隔离操作
解决并发一致性问题
隔离级别
未提交读:事务的修改对其他事务是可见的
提交读:事务的修改只有提交之后才对其他事务可见
可重复读:保证一个事务多次读取的结果是一样的
可串行化:强制事务串行执行