小红花·文摘
  • 首页
  • AI Tokens🪙
  • 排行榜🏆
  • 直播
  • FAQ

本文介绍WiredTiger存储引擎中B-Tree叶页的内存结构:新键通过WT_INSERT skiplist插入,已有键的修改挂入WT_UPDATE链表,未提交更新仅挂链不写入磁盘。读路径按时间戳在链上查找可见版本,旧版本在reconcile时移入History Store。文章还提及truncate操作及与日志回放的边界,为后续Reconciliation章节铺垫。

【WiredTiger 内核】B-Tree 与 update chain:未提交更新只挂链

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger作为MongoDB默认存储引擎的内核机制,定位为文档库页式B-Tree加旁路History Store,与PG/InnoDB、SQLite、RocksDB等分工明确。文章规划17篇系列,涵盖Session、Cache、Eviction、Reconciliation、Timestamps、Checkpoint等核心流程,并指出脏页须先reconcile才能驱逐,HS体积受更新率与窗口影响,为后续深入解析奠定框架。

【WiredTiger 内核】文档库存储引擎全景:MongoDB 默认引擎的生态位

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文介绍WiredTiger存储引擎的缓存机制。缓存按需加载B-Tree页,WT_REF表示页是否在内存,WT_PAGE是已加载形态。缓存计量区分clean和dirty页,dirty页必须经reconcile转换后才能写盘。修改通过WT_UPDATE链和WT_INSERT跳表记录,session和cursor不计入缓存配额。与PostgreSQL不同,WT将内存布局与磁盘格式分离,并支持共享缓存模式。

【WiredTiger 内核】Cache 与 WT_REF:clean/dirty 计量与按需读页

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-22T00:00:00Z

本文探讨了FoundationDB的存储引擎,重点比较了Redwood与SQLite派生引擎的区别。Redwood通过多版本B-Tree和前缀压缩技术,提高了吞吐量并降低了写放大。文章指出,存储引擎的选择不会影响分布式事务的隔离性,且引擎切换需谨慎。整体而言,Redwood在设计上弥补了SQLite引擎的不足,适应了更复杂的工作负载需求。

【FoundationDB 内核】SSD Engine 与 Redwood:从 SQLite 派生到版本化 B-Tree

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

SQLite的B-Tree模块分为table b-tree(64位整数key,数据仅存叶子,近似B+Tree)和index b-tree(任意key,不存数据)。页内通过cell pointer array实现逻辑有序与物理位置解耦,插入时无需搬移已有内容。overflow阈值保证索引树最小扇出为4。查找从根页二分至叶子,分裂合并由balance()统一触发,分派至balance_deeper、balance_nonroot或balance_quick。

【SQLite 内核】B-Tree 遍历与分裂:表 B-Tree、索引 B-Tree 与 cell 布局

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

该文章是SQLite内核系列的技术指南,涵盖17篇内容,从单文件格式、Pager缓存、B-Tree分裂到VDBE字节码、WAL日志和锁状态机。文章提供阅读路径和依赖关系,适合嵌入式工程师或从PG/InnoDB转来的读者,帮助理解SQLite的存储、并发与选型对比。

【SQLite 内核】单文件 · Pager · B-Tree · VDBE · WAL · 锁

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

本文为SQLite内核系列首篇,介绍其嵌入式行存数据库的定位:单文件、页式B-Tree、VDBE执行引擎及文件级单写者约束。对比PG/InnoDB服务器行存、RocksDB LSM与DuckDB列存,强调零IPC带来短调用链而非无引擎。规划17篇阅读路线,涵盖Pager、B-Tree、WAL、锁等机制,并锚定学术谱系与开放问题。

【SQLite 内核】嵌入式行存全景:单文件、单写者、零 IPC

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

本文介绍SQLite单文件格式:前100字节为数据库头,记录页大小、版本、计数器等自描述字段;B-Tree页头用1字节区分4种页类型,cell指针数组与内容区相向增长;页1固定为schema根页。通过hexdump实测验证字段,并澄清页大小不可随意更改、页1非用户表等常见误解。

【SQLite 内核】单文件格式与页面头

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

本文介绍SQLite的VDBE字节码执行引擎。sqlite3_prepare_v2将SQL编译为字节码程序,sqlite3_step在虚拟机上执行该程序。通过EXPLAIN分析点查SELECT name FROM t WHERE id=1,展示Transaction→OpenRead→SeekRowid→Column→ResultRow的执行流程。VDBE通过游标调用B-Tree,不直接读文件。强调opcode细节非稳定API,升级后需重新验证。

【SQLite 内核】VDBE 字节码执行:prepare、step 与寄存器机

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

Without an index, every query scans every row. WHERE id = 42 on a million-row table reads all million rows to find one. That’s O(n) — slow. A B+ tree index is a sorted data structure that maps key...

OLTP – Phase 8 B-Tree Index

Kimserey Lam’s website, Software Development blog posts, videos and tutorials Kimserey Lam’s website, Software Development blog posts, videos and tutorials · 2026-06-13T05:00:00Z

自1972年提出以来,B-tree成为数据库和文件系统的核心数据结构,因其与磁盘I/O模型的契合而减少随机读次数,查找效率高,适合大规模数据。B+tree是其变体,优化了范围查询和并发控制。节点分裂与合并是保持平衡的关键操作。现代存储引擎如InnoDB和PostgreSQL基于B-tree,适应硬件演进,继续发挥重要作用。

B-tree 深度解剖:从磁盘 I/O 模型到 boltdb 源码

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2026-04-18T00:00:00Z

本文探讨了五种主流Linux文件系统的树形结构设计,包括ext4的Extent Tree、XFS的B+Tree、btrfs的CoW B-Tree、ZFS的间接块树和F2FS的NAT/SIT。分析了每种文件系统的优缺点、性能表现及适用场景,强调了树形结构在处理大文件和提高I/O效率方面的重要性。

文件系统中的树:extent、HTree 与 CoW B-tree 的代价

土法炼钢兴趣小组的博客 土法炼钢兴趣小组的博客 · 2025-07-15T00:00:00Z
卢卡斯·菲特尔:Postgres与SQL Server:B-Tree索引差异及去重的优势

优化查询性能时,索引是数据库工程师的重要工具。PostgreSQL和SQL Server都使用B-Tree索引,但实现和维护方式不同。SQL Server通过聚集索引物理排序数据,而PostgreSQL将表存储为无序堆,索引指向堆中的元组。PostgreSQL 13版本引入去重功能,显著减少索引大小,提高性能。两者在索引策略和性能上存在显著差异,影响查询效率和资源使用。

卢卡斯·菲特尔:Postgres与SQL Server:B-Tree索引差异及去重的优势

Planet PostgreSQL Planet PostgreSQL · 2025-04-03T05:45:13Z
SQL中的索引类型:B-Tree、Hash、GiST、GIN和BRIN

在SQL数据库中,索引优化查询速度。PostgreSQL等关系数据库提供多种索引类型:B-Tree适合常规查询,Hash用于快速等值查询,GiST处理复杂数据,GIN适合多元素值,BRIN适合大表。选择合适的索引能显著提升查询性能。

SQL中的索引类型:B-Tree、Hash、GiST、GIN和BRIN

DEV Community DEV Community · 2025-03-03T00:35:06Z
SQL索引类型:B树、哈希、GIST、SPGIST、BRIN和GIN

数据库索引用于加速数据搜索,PostgreSQL支持多种索引类型:BTREE适合一般搜索,HASH用于精确匹配,GIST/SPGIST处理复杂数据,BRIN适合大数据集,GIN用于全文和数组搜索。选择索引类型需根据数据和查询需求。

SQL索引类型:B树、哈希、GIST、SPGIST、BRIN和GIN

DEV Community DEV Community · 2024-12-27T01:42:13Z
Pawsgresville的秘密:消失数据的案件。Postgres索引

在Pawsgresville,私家侦探B-Tree帮助猫咪客户Lайка解决LIKE查询失败的问题,建议使用GIN索引。教授介绍了GIN和GIST处理复杂数据的方法,而BRIN适合大数据。B-Tree强调索引顺序和VACUUM的重要性,以确保数据库高效运行。

Pawsgresville的秘密:消失数据的案件。Postgres索引

DEV Community DEV Community · 2024-12-23T11:46:29Z

本文介绍了GaussDB中的BTree和UBTree索引,分析了BlinkTree存储结构相较于传统B+树在高并发读写和写写场景中的优势,主要得益于其特殊结构和MVCC能力。BTree和UBTree通过优化加锁机制提升了并发性能,并具备独立的垃圾回收能力,但未来仍需优化索引空间占用。

解读GaussDB的BTree索引和UBTree索引,如何带来更强并发能力

华为云官方博客 华为云官方博客 · 2024-12-02T07:41:47Z
OrioleDB 公共Alpha版本

OrioleDB在Supabase平台发布了公共Alpha版本,作为Postgres默认Heap存储的替代品。该版本仅限于免费组织,不支持生产工作负载,索引仅支持默认B-Tree类型。建议测试者反馈,生产环境应使用标准选项。

OrioleDB 公共Alpha版本

Blog - Supabase Blog - Supabase · 2024-12-01T07:00:00Z
Brandur Leach:Postgres 17 B-tree批量扫描带来的实际性能提升

Postgres 17即将发布,带来B-tree索引优化,提升查询性能。测试显示API服务吞吐量提高30%,请求时间减少20%。这对复杂应用有显著影响,开发者可通过升级轻松提升性能。

Brandur Leach:Postgres 17 B-tree批量扫描带来的实际性能提升

Planet PostgreSQL Planet PostgreSQL · 2024-09-23T14:15:00Z

Lucy Linder在Suisse Romande的PostgreSQL Meetup上讨论了从PostgreSQL 13迁移到15的挑战,主要是在pg_restore期间出现的错误。她提到了索引行大小超过btree版本4的最大值的问题,并提到了RDS Only和YugabyteDB的解决方案。

错误:索引行大小 3056 超过 btree 版本 4 的最大值 2704

DEV Community DEV Community · 2024-09-20T13:42:13Z
  • <<
  • <
  • 1 (current)
  • 2
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码