- 原子性
- 持久性
- 隔离性
- 一致性
- 详细说说如何保证原子性
- 事务对数据进行修改前,会记录一份快照到Undo Log
- 如果事务中有任何一步执行失败,系统会读取Undo Log将所有操作回滚,恢复到事务开始前的状态。
- 从而保证事务要么全部成功,要么全部失败。
- 详细说说如何保证持久性
- MySQL的持久性主要由预写Redo Log, 双写机制, 两阶段提交以及Checkpoint刷盘机制共同保证。
- 当事务提交时,MySQL会先将事务的修改操作写入Redo Log, 并强制刷盘,然后再将内存中的数据页刷入磁盘。
- 这样即使系统崩溃,重启后也能通过Redo Log重放恢复数据。
- 详细说说如何保证隔离性
- 一个事务正在修改某条数据时,MySQL会通过临键锁来防止其他事务同时进行修改,避免数据冲突。
- 同时,临键锁可以防止幻读现象的发生。比如事务A查询 id>10 的记录,那么临键锁不仅会锁住id=10的行,还会锁住10后面的“间隙”,防止其他事务插入id=15的数据。
- MVCC主要用来优化读操作,通过保存数据的历史版本,让读操作不需要加锁就能直接读取快照,提高读的并发性能。
- 如何保证一致性呢?
- MySQL的一致性并不是靠某一个机制单独保证的,而是原子性、隔离性和持久性协同作用的结果。
posted @
2025-05-31 14:50
kuki'
阅读(
26)
评论()
收藏
举报