Hacker News | 📄 原文链接 | 2026-10-15 收录

同一个任务,两个引擎:InnoDB 与 Iceberg 内部机制 — Hacker News 中文摘要

来源:marcpaul.io — 49 分 · by marcbpaul

📋 概述

作者把自己的股票分析仓库从 OLTP 引擎迁到 OLAP 栈:第一版跑在 InnoDB 上,第二版同一套分析改跑 lakehouse,起因只是想要一个优化点,但为了用上它,他被迫把 lakehouse 的每一层都弄明白。文章先梳理 InnoDB 的三条保证:行存储把所有列放在一起,取某个标的的一根 K 线只碰磁盘上一处,正是写入所需的形态,但一个指标只要用到两列,也会通过 buffer pool 把整行所有列都取出来;每个索引都是独立的 B 树,每次写入都要更新表上所有 B 树,索引本质上是用更慢的写换更快的读,所以他的 Raw 表只有主键,重索引与分区都放在接收 Raw 下游结果的表上;undo log 支撑并发读写,行被更新或删除时旧值写进 undo log,写入期间并发会话从里面读到旧版本,插入的 undo log 在提交后立即清理,更新与删除的 undo log 则进入全局的 history list,这就是 MVCC 的由来,而 InnoDB 会在所有早于或等于该提交开始的会话结束后才标记清理。

🔑 核心要点

💡 金句

B-trees are extremely quick to read. The goal of any index is to speed up reads at the cost of slower writes. Great for selective reads, awful for write heavy ingestion work.
← 返回 Hacker News 首页