文章预览
上一篇《 刷盘,还是不刷盘,是一个问题 》中我们遇到了哪些问题? 1. 已提交事务+未提交事务的ACID特性怎么保证? 画外音:上一篇中遇到的问题,主要是原子性与持久性。 2. 数据库崩溃,怎么实施故障恢复? 3. 每次都刷盘随机写,性能低,怎么提高数据库性能? 画外音:正常情况下,不需要每个事务提交,都进行刷盘。 要提升随机写性能,最容易想到的,就是利用高性能的顺序写日志,记录事务中的一些信息,来实现已提交事务的数据“要刷盘”,未提交事务的数据“不刷盘”,以及实现故障恢复。 这个顺序写的日志,记录什么内容呢? 事务中,对数据库的写操作。 如何来标识写操作的时序呢? 每条日志记录会有一个递增的 日志序列号 (log sequence number, LSN ),唯一标识一条日志记录。 还有一种特殊的日志记录,叫 检查点 (checkpoint
………………………………