Redis 的 RDB 快照通过 fork() 创建子进程进行 CopyOnWrite 写时复制,AOF 重写同样依赖子进程。虽然主线程不直接参与磁盘 I/O,但 fork() 的页表复制与 COW 期间的内存页拷贝会在高写入负载下造成明显的主线程延迟抖动。 一、持久化关键配置与延迟观测
分类:数据库与存储
共 20 篇文章PostgreSQL、MySQL InnoDB、Redis 内部机制与存储引擎调优
Redis 提供 RDB 快照与 AOF 日志两种持久化方式,二者在数据安全性与恢复速度上存在本质权衡。 一、RDB 与 AOF 对比 | 维度 | RDB | AOF | |||| | 数据安全性 | 可能丢失最后一次快照后的数据 | 取决于 appendfsync 策略 | | 恢复速度 | 快(二进制加载) |
对比传统关系型数据库采用的 B+ 树原地更新架构与 RocksDB/LevelDB 采用的 LSM-Tree 追加写架构,从随机 I/O、读放大、写放大与空间放大三个维度剖析各自的适用工作负载。
B+ 树与跳表是数据库与 KV 存储中最常用的两种有序索引结构,其设计取舍直接决定了读写性能特征。 一、B+ 树特点 多路平衡树,非叶节点仅存储键,扇出大、树高低 所有数据集中在叶子节点,并通过链表相连,适合范围查询 原地更新,写放大较低,但随机写引发页分裂 二、跳表特点 基于多层链表实现,查找、插入、删除平均 O(l
PostgreSQL 通过 WAL(WriteAhead Logging) 保证事务的持久性(Durability)。任何对数据页的修改都必须先将对应的 XLOG 记录刷入磁盘后,数据脏页才允许落盘。 一、Checkpoint 尖峰平滑参数