首页
沸点
课程
APP
AI用量
作品广场
专家标注
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
内存漫游
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
赞
0
文章 0
沸点 0
赞
0
返回
|
搜索文章
最新
热门
MVCC——数据库为什么要保存“旧版本”?
MVCC(多版本并发控制)通过维护数据的多个版本,解决事务并发读取时的可见性问题。它允许不同事务根据自身快照看到不同版本的数据,确保读写不阻塞。旧版本不会立即删除,因可能被未提交事务需要。
事务到底解决了什么问题?
前面的文章已经从存储一路走到了 WAL: 到这里,数据库已经能够回答一个重要问题: “如果数据库突然崩溃,已经提交的数据怎么恢复?” 但还有一个更复杂的问题: 这就是这次要进入的主题。
WAL:数据库如何保证崩溃后还能恢复
WAL(预写日志)是数据库保障数据持久性的核心机制。其核心思想是:修改数据页前,必须先将变更记录写入日志并持久化。即使内存中的脏页未及时写回磁盘,崩溃后也可通过重放日志(Redo)恢复数据。
Buffer Pool:数据库如何管理内存中的数据
如果说 Page 解决的是“数据如何组织”,那么 Buffer Pool 解决的就是:哪些数据应该留在内存里?什么时候读进来?什么时候淘汰?什么时候写回磁盘?
Page 到底是什么:数据库如何把一条条记录放进磁盘
如果一页只有 8KB、16KB,而记录大小又各不相同,数据库究竟如何知道一条记录在哪里、哪里还有空间,以及删除和更新之后如何继续使用这些空间?
同样是 B+Tree,为什么 SQLite、PostgreSQL 和 InnoDB 的实现不同?
本文比较了SQLite、PostgreSQL和MySQL InnoDB三种数据库在B-Tree索引实现上的核心差异。
为什么数据库需要索引:从二分查找到 B+Tree
从最直接的全表扫描,到看起来已经足够高效的二分查找,再到真正面向数据库存储模型设计的 B+Tree,这背后并不只是数据结构的变化,而是一次从 算法 、Page、 I/O、 数据访问模式。
数据库存储的基石:Page、Heap File 与数据在磁盘上的组织方式
本文从最底层的字节流出发,一步步拆解 PostgreSQL、MySQL InnoDB 与 SQLite 的数据组织哲学,理清 Page Header、Tuple 以及 Index 如何联动协同。
从文件系统到数据库:为什么我们需要数据库?
数据库设计思想探讨,文件存储的局限、索引的快速查找、存储引擎的职责、事务的ACID保证、并发控制的必要性,及数据库的四大类。
从 memcpy 开始理解存储系统中的数据
本文深入探讨了 C++ 内存布局与数据库存储之间的本质差异。内存对象为程序运行优化,包含指针、对齐填充等运行时信息;而持久化存储需要稳定、自描述的数据格式。
下一页
个人成就
文章被阅读
190
掘力值
115
关注了
0
关注者
0
收藏集
0
关注标签
2
加入于
2026-07-25