2026-04-30 | algorithms · database | #mvcc #snapshot-isolation #ssi #write-skew #postgresql #innodb #percolator #tikv #hekaton #version-chain
按 Wu 等人(VLDB 2017)的设计维度对照 PostgreSQL 17、InnoDB 8.4、Oracle、SQL Server、Hekaton 与 TiKV 的 MVCC;用模拟器验证三种可见性写法等价、测量 SSI 误杀,并在 PostgreSQL 上复现写偏斜。
2026-04-27 | algorithms · database | #buffer-pool #lru-k #2q #clock-pro #postgresql #innodb #page-replacement
从数据库缓冲池的 fix/unfix、脏页和扫描污染出发,对照 LRU-K、2Q、CLOCK-Pro 的学术脉络,以及 PostgreSQL 16 与 InnoDB 8.0 的源码实现,用可复现 trace 比较命中率和元数据开销。
2026-04-25 | algorithms · database | #join #nested-loop-join #sort-merge-join #hash-join #hybrid-hash-join #radix-join #postgresql #mysql #query-processing
用页 I/O 模拟器按 Shapiro 1986 与 DeWitt 1984 的代价模型对比嵌套循环、排序归并、Grace 与 hybrid hash,再对照 PostgreSQL 17、MySQL 8.4 源码看溢出与倾斜怎么处理,并复现内存中分区与不分区之争。
2026-04-26 | algorithms · database | #query-optimizer #system-r #volcano #cascades #cardinality-estimation #cost-model #postgresql #calcite #dpccp
从 System R 的左深动态规划与 interesting orders 出发,解释 Volcano/Cascades 如何用 memo、规则和物理性质组织搜索,再用可复现实验展示查询图形状与基数估计误差如何决定计划质量。
2026-04-28 | algorithms · database | #wal #aries #crash-recovery #checkpoint #postgresql #sqlite #database
从 steal/no-force 缓冲策略出发,拆解 ARIES 的 Analysis、Redo、Undo、pageLSN、CLR 与 fuzzy checkpoint,并用可复现实验验证恢复中再次崩溃的幂等性;最后对照 PostgreSQL 16 与 SQLite 3.46 的真实 WAL 边界。
2025-07-15 | algorithms · database | #external-sort #io-model #replacement-selection #loser-tree #polyphase-merge #postgresql #tuplesort #gnu-sort #coreutils
从 Aggarwal–Vitter 的 I/O 下界出发,用可复现实验比较替换选择与快排生成 run、败者树与堆的比较次数、多阶段与平衡归并的搬运量,再对照 PostgreSQL 18 与 GNU sort 9.11 源码说明今天为何多用快排、平衡归并和堆。
2026-06-28 | linux · storage | #fsync #writeback #errseq #ext4 #xfs #postgresql #data-integrity #kernel
fsync 返回错误时数据可能已经没了:fsyncgate、写屏障盲区与 PostgreSQL PANIC 的工程含义。
2026-07-22 | db · storage | #database #lsm-tree #storage-engine #postgresql #mysql #innodb #clickhouse #columnar #lakehouse #iceberg #parquet #flink #kafka #stream-processing #trino #query-engine #rocksdb #leveldb #compaction #milvus #vector-search #redis #cache #memcached #lucene #elasticsearch #full-text-search #bm25 #tikv #tidb #tiflash #htap #percolator #foundationdb #strict-serializability #deterministic-simulation #sqlite #embedded #btree #vdbe #wal #wiredtiger #mongodb #history-store #mvcc
汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存、湖仓、流处理、查询引擎、RocksDB、向量、Redis、全文检索、TiKV/HTAP、FoundationDB、SQLite、WiredTiger 与图数据库内核,以及 LSM-Tree 实验与其它单篇。
2026-06-16 | database · kernel | #postgresql #pg-kernel #mvcc #wal #vacuum #btree #query-planner #streaming-replication #logical-replication #buffer-manager #lock-manager #troubleshooting #pg-upgrade #pitr #postgresql-internals
从进程模型到磁盘页面、从 MVCC 到流复制——对 PostgreSQL 内核做完整的源码级拆解。不止步于源码分析:26 篇中 6 篇是运维实战——经典故障的根因与排查路径、性能调查的五层工具链、配置陷阱与恢复边界。面向想读懂 PG 内核源码、在生产环境排查过问题、准备给 PG 贡献代码的工程师。
2026-07-25 | database · storage | #pgvector #postgresql #hnsw #index-am #toast #milvus #vector-engine #hybrid-filter
以 pgvector v0.8.0 源码钉住 Index AM、8KB 页上的 HNSW element/neighbor 元组与 iterative_scan;对照 Milvus Growing/Sealed 与 Knowhere,说明同进程 SQL 扩展买到的事务边界与付掉的页模型/资源争用代价。
2026-07-01 | database · distributed | #debezium #cdc #kafka-connect #mysql #postgresql #binlog #snapshot #schema-history
从 Debezium 变更事件信封(op、before/after、source)入手,拆解 snapshot 与 streaming 两阶段、Kafka Connect 的 connector task 与 offset/schema history 主题,并说明引擎侧如何保证主键顺序与幂等,衔接 lakehous…
2026-06-16 | database · kernel | #postgresql #pg-kernel #mvcc #clog #hint-bit #snapshot #slru #transaction-id #wraparound #procarraylock #innodb #undo-log
在已有 MVCC 文章基础上深入 PG 并发控制的三个基础设施:CLOG 的 SLRU 结构(事务状态位、页面格式、SLRU 淘汰)、hint bit 的写入时机和竞争问题(何时写、谁写、写坏了怎么办)、PG 14 snapshot scalability 优化的具体机制(ProcArrayLock 为什么是瓶颈、x…
2026-07-22 | database · storage | #wiredtiger #postgresql #innodb #rocksdb #mvcc #wal #buffer-pool #comparison #mongodb
按缓冲池、写前日志、MVCC 落点、脏页写出与故障模式对照 PostgreSQL、InnoDB、RocksDB 与 WiredTiger;只谈机制与代价,不写未实测延迟排名。
2026-07-22 | database · storage | #wiredtiger #mongodb #engine-selection #history-store #rocksdb #postgresql #sqlite #decision-tree
给出相对 PG/InnoDB/SQLite/RocksDB 的选型决策树,回收 History Store 与 cache 公平性等开放问题,并收束 WiredTiger 内核 17 篇阅读地图。
2026-07-18 | database · storage | #sqlite #postgresql #innodb #buffer-pool #wal #locking #process-model #comparison
用进程模型、日志、锁与缓冲池四轴对照 SQLite 与 PostgreSQL / InnoDB:说明嵌入式单文件如何删掉服务器层,以及同名 WAL、隔离、缓存概念为何不能平移运维经验;不写跨库吞吐排名。
2026-07-18 | database · storage | #sqlite #postgresql #duckdb #rocksdb #engine-selection #embedded #reading-map
用部署形态、写并发、查询形态与持久化需求收束 SQLite / PostgreSQL·InnoDB / DuckDB / RocksDB 选型;给出站内阅读地图、全系列学术谱系与开放问题,标志 SQLite 内核系列完成。
2026-07-15 | database · storage | #elasticsearch #postgresql #gin #clickhouse #vector-engine #selection #rag #full-text-search
给出 ES/OpenSearch、PostgreSQL GIN、ClickHouse 全文、专用向量引擎与「仅日志检索」的扩展决策树;回链 observability/08 与 llm-infra RAG,收束本系列 18 篇开放问题。
2026-07-07 | database · distributed | #sql-parser #analyzer #logical-plan #trino #duckdb #catalog #tablescan #calcite #postgresql
从 Parser/AST、Analyzer 与 Catalog 元数据到 LogicalPlan 算子树;对照 PostgreSQL parse/rewrite/plan 边界,并用 DuckDB 1.5.4 实测 EXPLAIN 与 Trino 476+ 文档中的 logical plan 结构对读。
2026-07-07 | database · distributed | #volcano-model #iterator #pipeline-breaker #trino #postgresql #query-execution #graefe #operator
从 Graefe Volcano 论文的 Open/Next/Close 接口出发,拆解 pull 语义、Sort/Hash Agg 等 pipeline breaker,并对照 PostgreSQL ExecutorRun 与 Trino 476+ Operator/Driver 的 Page 流水线。
2026-07-07 | database · distributed · architecture | #trino #spark #clickhouse #duckdb #datafusion #postgresql #engine-selection #lakehouse #olap #data-platform
用决策树收束 Trino/Spark/ClickHouse/DuckDB/DataFusion/PostgreSQL 的适用边界:交互式联邦、批 ETL、嵌入式分析、流批一体各走哪条路径;给出能力对照表(无吞吐排名)与 postgresql→columnar→lakehouse→stream→query-engine…
2026-06-16 | database · kernel | #postgresql #pg-kernel #postmaster #shared-memory #backend-process #pgproc #lwlock #background-worker #fork #ipc
拆解 PostgreSQL 多进程架构的核心:Postmaster 的启动与信号处理、Backend 进程的 fork()→InitPostgres→主循环生命周期、CreateSharedMemoryAndSemaphores() 的共享内存初始化流程、PGPROC/ProcArray/PGXACT 等关键共享内存…
2026-06-16 | database · kernel | #postgresql #pg-kernel #page-layout #heap-tuple #toast #pageinspect #ctid #xmin #xmax #t-infomask #storage
拆解 PostgreSQL 的物理存储层:Page 的 8KB 布局(PageHeaderData、ItemId 数组、special space)、HeapTupleHeaderData 的字段语义(xmin/xmax/ctid/t_infomask/t_infomask2)、TOAST 外存机制的压缩阈值与四种策…
2026-06-16 | database · kernel | #postgresql #pg-kernel #wal #xloginsert #checkpoint #redo #recovery #wal-writer #wal-level #pg-waldump #xlogrecord #checkpoint-completion-target
拆解 PostgreSQL WAL 的完整内部机制:XLogInsert() 从分段锁到 WAL Buffer 的插入路径、XLogRecord 的物理布局(Header + Block Headers + Data)、Checkpoint 的两阶段流程与 IO 摊平算法、REDO 恢复的 RMGR 分发、wal_l…
2026-06-16 | database · kernel | #postgresql #pg-kernel #buffer-manager #shared-buffers #clock-sweep #bgwriter #pg-buffercache #buffer-pool #ring-buffer #double-buffering
拆解 PostgreSQL Buffer Manager 的核心机制:shared_buffers 的内部组织(BufferDescriptors 数组、Buffer Table hash table、buffer pool)、Clock sweep 替换算法的完整源码路径、buffer 四态状态机与 pin/unp…
2026-06-16 | database · kernel | #postgresql #pg-kernel #lock-manager #spinlock #lwlock #heavyweight-lock #deadlock-detection #row-locks #pg-locks #concurrency
拆解 PostgreSQL 锁管理器的完整架构:SpinLock 自旋锁的硬件原语与使用边界、LWLock 从 PG 9.4 前到 PG 16 LWLockWaitListLock 的三代演进、Heavyweight Lock 的 LockAcquire() 完整路径和锁表结构、死锁检测 DeadLockCheck(…
2026-06-16 | database · kernel | #postgresql #pg-kernel #transaction #subtransaction #savepoint #two-phase-commit #2pc #transstate #xid #wraparound #xact
拆解 PostgreSQL 事务系统的三层结构:事务状态机 TransState 的状态转换路径、子事务(savepoint)的 TransactionState 栈与 ResourceOwner 嵌套管理、两阶段提交(2PC)的 WAL 记录与 pg_twophase 状态文件格式、事务 ID 分配的 xidSto…
2026-06-16 | database · kernel | #postgresql #pg-kernel #vacuum #freezing #wraparound #autovacuum #visibility-map #free-space-map #index-only-scan #pgstattuple #bloat #pg-stat-progress-vacuum #transaction-id
拆解 PostgreSQL VACUUM 的完整内部流程:heap scan、dead tuple 回收、索引清理、FSM/VM 更新。深入可见性映射和空闲空间映射的结构设计,以及 Index-Only Scan 如何依赖 VM 判断页面全可见。解析 Freezing 机制与事务 ID 回卷防御,Autovacuum…
2026-06-16 | database · kernel | #postgresql #pg-kernel #parser #analyzer #rewriter #gram-y #query-tree #parse-analyze #pg-rewrite #view-expansion #rtable #jointree
拆解 PostgreSQL 查询编译的前两步:Parser 如何将 SQL 字符串转换为 RawStmt 语法树(基于 gram.y 的 Bison 语法文件),Analyzer 如何通过 parse_analyze() 完成表名/列名解析、类型推导和权限检查,Rewriter 如何基于 pg_rewrite 规则系…
2026-06-16 | database · kernel | #postgresql #pg-kernel #query-planner #statistics #cost-model #selectivity #analyze #histogram #mcv #stats-drift #create-statistics #random-page-cost #explain
拆解 PostgreSQL 查询优化器的决策基础:pg_statistic 中 MCV/histogram/correlation 的存储结构、ANALYZE 的采样流程与精度边界、clauselist_selectivity 如何逐层估算选择率、seq_page_cost 等代价常量的物理意义与调优依据、CREAT…
2026-06-16 | database · kernel | #postgresql #pg-kernel #query-planner #join-order #nested-loop #hash-join #merge-join #geqo #dynamic-programming #seqscan #indexscan #bitmapscan #explain-analyze #allpaths #joinpath
拆解 PostgreSQL 查询优化器的路径生成:make_one_rel() 从基表访问到 Join 路径的完整流程、四种扫描路径 (SeqScan/IndexScan/IndexOnlyScan/BitmapScan) 的创建条件、三种 Join 方式 (NestLoop/HashJoin/MergeJoin)…
2026-06-16 | database · kernel | #postgresql #pg-kernel #executor #volcano-model #expression-evaluation #hash-join #tupleslot #wait-event #pg-blocking-pids #explain-analyze
拆解 PostgreSQL 执行器的火山模型(ExecInitNode→ExecProcNode→ExecEndNode)、Hash Join 内存化实现、EEO 表达式求值的 opcode 编译与解释执行机制、TupleTableSlot 的三种数据承载方式(virtual/heap/minimal)。附带查询 h…
2026-06-16 | database · kernel | #postgresql #pg-kernel #jit #llvm #expression-evaluation #tuple-deforming #olap #query-execution #jit-compilation
拆解 PostgreSQL 的 LLVM JIT 编译机制:JIT 编译的触发决策流程(jit_above_cost 三级阈值)、LLVM 模块管理与惰性编译、表达式求值从 EEO opcode 到 LLVM IR 再到机器码的完整路径、Tuple 变形(deforming)的 JIT 加速原理,以及 JIT 在 O…
2026-06-16 | database · kernel | #postgresql #pg-kernel #btree #index #page-split #deduplicate #rightlink #high-key #bt-page-items #bt-metap #btpagiopaque
拆解 PostgreSQL B-Tree 索引的内核实现:BTPageOpaque 页面布局(high key / rightlink 的工程意义)、_bt_doinsert() 插入路径与 _bt_split() 页面分裂的完整流程(分裂点选择不是简单的 50/50)、PG 12+ 去重(deduplicate_i…
2026-06-16 | database · kernel | #postgresql #pg-kernel #gist #index #consistent #penalty #picksplit #point-ops #tsvector-ops #full-text-search #geometric-index #generalized-search-tree
拆解 PostgreSQL GiST 索引的抽象算子接口(Consistent/Union/Penalty/PickSplit)、深度优先搜索与 Consistent 过滤的组合逻辑、Penalty 引导插入路径与 PickSplit 决定分裂策略的完整流程,以及 point_ops 的几何距离搜索和 tsvecto…
2026-06-16 | database · kernel | #postgresql #pg-kernel #gin #inverted-index #full-text-search #tsvector #fast-update #pending-list #bitmap-scan #intarray
拆解 PostgreSQL GIN 索引的内部结构:entry tree、posting list、posting tree 三者各在什么条件下使用;Fast Update 的 pending list 设计与 gin_clean_pending_list 合并时机;gingetbitmap() 的 bitmap A…
2026-06-16 | database · kernel | #postgresql #pg-kernel #brin #hash-index #bloom-index #btree #index-selection #brin-revmap #page-range
过一遍 BRIN 索引的范围摘要哲学——用每个 page range 一条摘要替代逐行索引,在 1TB 的表上创建时间从小时降到秒级。同时讨论两条"不建 B-Tree"的高性价比路径:Hash 索引在 PG 10+ 的 WAL 安全边界和 Bloom 索引的多列任意组合过滤。附带代价对比表和建索引决策树。
2026-06-16 | database · kernel | #postgresql #pg-kernel #streaming-replication #wal-sender #wal-receiver #synchronous-replication #replication-slot #failover #timeline #split-brain #pg-rewind #wal-recovery #slot-overflow #pg-stat-replication
拆解 PostgreSQL 流复制的完整内核路径:WAL Sender 的 WalSndLoop→XLogSendPhysical 发送链路、WAL Receiver 的 WalRcvLoop 接收与恢复链路、同步复制的三种语义与等待机制、Failover 时 Timeline 的 fork 原理与 split-br…
2026-06-16 | database · kernel | #postgresql #pg-kernel #logical-replication #logical-decoding #reorder-buffer #pgoutput #publication #subscription #decode #conflict-detection #replication-slot #wal
拆解 PostgreSQL 逻辑复制的完整内核路径:LogicalDecodingContext 从 WAL 解码出逻辑变更的内部流程、Reorder Buffer 按 COMMIT 顺序重排事务与 snapshot 重建机制、pgoutput 输出插件的二进制协议与行过滤变换、Publication/Subscri…
2026-06-16 | database · kernel | #postgresql #pg-kernel #extensions #fdw #foreign-data-wrapper #postgres-fdw #hook #pushdown #planner #executor
拆解 PostgreSQL 扩展系统的两种核心机制:全局 hook 机制全景(planner_hook、ExecutorStart_hook、ProcessUtility_hook 等覆盖七个子系统)和 FDW(Foreign Data Wrapper)的 FdwRoutine 回调接口。重点分析 postgres_…
2026-06-16 | database · kernel | #postgresql #pg-kernel #monitoring #observability #pg-stat-statements #pg-stat-activity #pg-locks #pg-stat-replication #autovacuum #prometheus #alerting #pgbadger #pgcenter
不从 Grafana 模板照抄,而是从 PG 内核机制推导出必须监控的六个维度:连接与 wait_event、存储膨胀与 XID wraparound、WAL 与复制延迟、查询性能突变、锁等待链、以及 shared_buffers 命中率骗局。每个维度配具体 SQL 和指标解读,告警阈值给出内核依据而非拍脑袋数字,同…
2026-06-16 | database · kernel | #postgresql #pg-kernel #troubleshooting #connection-storm #transaction-id-wraparound #replication-slot #oom #idle-in-transaction #failure-modes #pg-stat-activity #pg-locks #pg-replication-slots
拆解 PG 生产环境中最危险的五种故障模式——连接风暴与 work_mem 连锁效应、事务 ID wraparound 危机完整时间线、replication slot 溢出多米诺效应、OOM 连锁 kill、长事务 idle in transaction 隐性破坏。每个故障给出可复现的触发方法、Mermaid 时序…
2026-06-16 | database · kernel | #postgresql #pg-kernel #performance #pg_stat_statements #explain #wait_event #pg_locks #perf #bpftrace #plan_cache_mode #lwlock #shared_buffers #pg_wait_sampling #pg_stat_kcache
不是工具箱罗列,而是一条按顺序推进的调查链:从 pg_stat_statements 定位可疑 queryid,到 EXPLAIN (ANALYZE, BUFFERS) 解剖执行计划,到 pg_stat_activity + wait_event 诊断等待类型,到 pg_locks + pg_blocking_pid…
2026-06-16 | database · kernel · ops | #postgresql #pg-kernel #pitr #pg_resetwal #pg_checksums #zero_damaged_pages #pg_dump #pg_restore #wal #corruption #recovery #timeline #pg_rewind
拆解 PostgreSQL 数据恢复路径的内部机制与操作边界:PITR 的三个关键窗口与 timeline fork 原理、pg_checksums 的校验粒度与盲区、pg_resetwal 的 hint bit 代价与 VACUUM FULL 陷进、pg_dump 并行调度的内部策略。重点在于每种操作做什么、不做什…
2026-06-16 | database · kernel · ops | #postgresql #pg-kernel #pg-upgrade #migration #hard-link #logical-replication #pg-dump #vacuumdb #disaster-recovery #inode #copy-on-write
拆解 pg_upgrade 的三种模式(--link 硬链接零拷贝、--clone CoW 快照、--copy 物理复制)的执行流程、内部机制和不可回滚的根本原因;逻辑复制跨版本迁移的低停机方案及序列/large object/DDL 三大盲区;四种常见坑的根因与应对;附带迁移方案决策树,从小库到大库选哪种方案一次说…
2026-06-16 | database · kernel · ops | #postgresql #pg-kernel #guc #configuration #shared-buffers #work-mem #effective-cache-size #random-page-cost #fsync #synchronous-commit #huge-pages #maintenance-work-mem #idle-in-transaction #log-lock-waits #deadlock-timeout #log-min-duration-statement #auto-explain #postgresql-tuning
逐一拆解 11 个最容易被误解和配错的 PostgreSQL GUC 参数:shared_buffers 的 double buffering 反噬、work_mem 作为'每个操作'而非'每个查询'的内存炸弹、effective_cache_size 和 random_page_cost 如何误导优化器走向灾难计划…
2026-04-22 | architecture · fintech | #ledger-db #oceanbase #tidb #postgresql #sharding #hot-account #archive #tigerbeetle
账务(Ledger)数据库是金融系统最硬的那块骨头。本文从 RPO/RTO 目标出发,对比 PostgreSQL、MySQL、OceanBase、TiDB、CockroachDB、Oracle、TigerBeetle 等主流选型,讲分片维度、热点账户拆解、索引设计、冷热归档、MVCC 并发控制与审计合规,辅以蚂蚁、S…
2026-04-24 | database | #query-optimizer #learned-qo #neo #bao #balsa #postgresql #pg_hint_plan
系统梳理 Neo、Bao、Balsa 以及新兴 LLM-assisted 查询优化的核心思想,结合 PostgreSQL pg_hint_plan 给出一条可落地的 learned QO 工程路径
2026-04-21 | database | #db-frontier #cxl #memory-pool #tiered-memory #buffer-pool #pond #tpp #postgresql #mysql
从 CXL 1.1 到 3.0 的协议演进、Type 1/2/3 设备分类,到 Pond、TPP 两篇 ASPLOS 2023 论文展示的云内存池化实践,再到 PostgreSQL / MySQL 在分层内存下的 buffer pool 调参方向,梳理 CXL 对数据库共享内存模型的重塑路径。
2026-04-13 | distributed | #replication #leader-follower #failover #postgresql #mysql #distributed-systems
一份数据写到一个节点,怎么安全地复制到其它节点?同步复制保证强一致但拖慢写入;异步复制延迟低但 Leader 崩溃可能丢数据;半同步在两者之间找平衡。本文拆解 PostgreSQL Streaming Replication、MySQL Semi-Sync / Group Replication、Galera Clu…
2026-09-25 | database | #database #mvcc #postgresql #snapshot-isolation #write-skew #ssi #serializable #vacuum #concurrency-control #isolation-level
从 PostgreSQL 源码级别拆解 MVCC 的实现机制:堆表版本链、事务快照、可见性判断规则、VACUUM、隔离级别的真实行为,以及 Snapshot Isolation 抓不住的 Write Skew 和 SSI 如何解决它。附 MySQL InnoDB vs PostgreSQL MVCC 对比。