Author name: Clyde Jin

DBA

PostgreSQL 架构原理第三期:事务与并发控制 —— MVCC、快照与锁机制

PostgreSQL 架构原理第三期:事务与并发控制 —— MVCC、快照与锁机制 引言 前两期我们分别从进程模型、内存结构、查询流程以及存储引擎的角度剖析了 PostgreSQL 的内部机制。本期将聚焦于数据库并发控制的核心——事务与隔离。PostgreSQL 凭借其实现精巧的多版本并发控制(MVCC),能够在不使用传统读锁的情况下提供高并发读写的隔离性,同时避免了“读-写”阻塞问题。 本文将系统讲解: 事务 ID 与元组头中的版本信息 事务状态与 Commit Log(clog) 快照(Snapshot)的构成与可见性判断规则 四种隔离级别及 PostgreSQL 的具体实现 […]

DBA

PostgreSQL 架构原理第二期:存储引擎深度解析 —— 堆表、元组结构与 TOAST 机制

PostgreSQL 架构原理第二期:存储引擎深度解析 —— 堆表、元组结构与 TOAST 机制 引言 在上一期中,我们从整体架构入手,探讨了 PostgreSQL 的进程模型、共享内存、查询处理全流程、WAL 以及缓冲区管理器。理解这些上层机制后,一个自然的问题是:数据最终是如何在磁盘上组织存储的?PostgreSQL 的存储引擎以“堆表 + 索引 + TOAST”的组合方式,实现了高效的按行存取、可变长度字段支持以及 MVCC 所需的多版本管理。 本文将深入数据文件的内部世界,详细讲解以下内容: 逻辑结构与物理文件的映射关系

DBA

PostgreSQL 架构原理第一期:从进程模型到核心内存机制

PostgreSQL 架构原理第一期:从进程模型到核心内存机制 引言 PostgreSQL 被誉为“世界上最先进的开源关系型数据库”,其强大的功能和可靠性背后,是一套经过数十年打磨的精致架构。理解 PostgreSQL 的内部工作原理,不仅能帮助我们写出更高效的查询,更能为性能调优和问题诊断打下坚实基础。 本文将带大家走进 PostgreSQL 的内核世界,从宏观的进程模型到微观的内部组件,循序渐进地揭示它是如何工作的。本文将重点涵盖以下内容: “进程每用户”模型及连接建立流程 进程间通信与共享内存的核心角色 查询处理的完整生命周期 WAL 机制及其在数据安全中的作用 缓冲区管理器的三层结构 一、PostgreSQL 的进程架构:每个用户一个进程 PostgreSQL 的实现采用了一种经典的

DBA

SQL Server 2025 新技术系列介绍(第三期)

本系列第一期回顾:SQL Server 2025 通过原生向量数据类型、DiskANN 索引、T-SQL AI 函数和 ONNX 模型本地托管,将 AI 深度集成至数据库内核。第二期聚焦企业级高可用、混合架构与数据迁移,解读了包含的可用性组(CAG)、Fabric 镜像、PolyBase 数据虚拟化等核心能力的演进。本期作为系列的收官之作,我们将从开发者与 DBA 的日常实战出发,通过代码案例、性能分析和决策框架,全景呈现 SQL Server 2025 在生产环境中的真实价值。 一、开发者实战:用最熟悉的

DBA

SQL Server 2025 新技术系列介绍(第二期)

本系列第一期回顾:SQL Server 2025 通过原生向量数据类型、DiskANN 索引、T-SQL AI 函数和 ONNX 模型本地托管,将 AI 深度集成至数据库内核,实现了从“存储数据”到“理解数据”的范式革命。本期作为系列第二期,我们将目光投向企业级生产环境的另一核心命题——高可用性、混合架构与数据迁移,详细解读 SQL Server 2025 在这些关键领域带来的实质性革新。 一、高可用性与灾难恢复:不止于“可用”,更追求“智慧” 对于承载核心业务的生产系统而言,高可用性(HA)与灾难恢复(DR)是生命线。SQL Server 2025 在这一领域的进化,核心可概括为

DBA

SQL Server 2025 新技术系列介绍(第一期)

SQL Server 2025 新技术系列介绍(第一期)—— AI 革命:当数据库真正“学会思考” 引言 如果说 SQL Server 2022 是微软向云端的优雅转身,那么 SQL Server 2025 则是一场彻底的自我重塑。2025 年 11 月 19

DBA

第五期:PostgreSQL扩展开发实战——用Rust构建自己的PG扩展

第五期:PostgreSQL扩展开发实战——用Rust构建自己的PG扩展 从零到一,深度掌握PostgreSQL扩展开发的完整生命周期 在前四期的专题中,我们看到了PostgreSQL生态的蓬勃力量:从PG 18/19的内核新特性,到向量检索的飞速演进,再到云原生分布式架构的深刻变革。而这些能力的基石,正是PostgreSQL引以为傲的扩展性。 PostgreSQL之所以能够从一款关系型数据库成长为综合性数据平台,其扩展架构是根本原因。PostGIS、TimescaleDB、pgvector、Citus——几乎所有改变游戏规则的能力,都始于一个扩展。而2026年,随着pgrx框架的全面成熟,用Rust开发PG扩展正在从“前沿探索”走向“生产标准”。 本期将带读者从零开始,掌握用Rust构建PostgreSQL扩展的完整流程。 一、为什么PostgreSQL需要扩展?扩展生态全景 PostgreSQL的扩展架构是其区别于大多数数据库的关键设计——数据库核心保持精简,所有附加能力以扩展形式提供。 扩展与普通SQL对象的本质区别在于:扩展是一组可安装、可版本化、可卸载的数据库对象的打包单元。一个扩展至少包含一个控制文件(.control)定义元数据(名称、版本、依赖等),以及一个SQL脚本文件用于创建扩展内的数据库对象。当扩展包含C语言实现的高性能函数或自定义数据类型时,还需要编译为共享库(.so)。 2026年的PG扩展生态已高度繁荣。根据PGXN(PostgreSQL Extension Network)的统计数据,已有数百个扩展覆盖了从地理空间(PostGIS)、时序数据(TimescaleDB)、向量检索(pgvector)、全文搜索(ParadeDB)到分布式分片(Citus)的几乎所有数据场景。更值得关注的是,2026年1月,PostgreSQL官方宣布了pgpm项目,旨在为纯SQL模块引入包管理机制,将模块化能力从系统级扩展下沉到应用层数据库逻辑。 与此同时,Kubernetes生态也在推动扩展部署模式的变革。PostgreSQL 18引入的extension_control_path配置项,允许从非系统目录加载扩展控制文件,彻底解耦了扩展与数据库核心镜像的生命周期。在CloudNativePG框架下,扩展可以打包为不到10MB的scratch镜像独立于数据库镜像发布,CI/CD流程也随之解耦。 二、扩展开发的两种路径:C vs. Rust 在pgrx出现之前,编写一个包含自定义函数或数据类型的PG扩展,意味着要在C语言中完成全部实现——手动处理内存上下文、手动管理引用计数、手动编写SQL注册脚本。一个指针错误就可能导致整个数据库进程崩溃。 pgrx的出现彻底改变了这一局面。pgrx是一个用Rust语言构建PostgreSQL扩展的完整框架,由两个核心组件构成:pgrx库提供Rust与PostgreSQL交互的基础设施;cargo-pgrx子命令管理从初始化到打包的整个开发流程。 两种路径的选择本质上取决于开发者的优先级:

DBA

第四期:云原生PostgreSQL的分布式架构演进

第四期:云原生PostgreSQL的分布式架构演进 从分片到存算分离,2026年PostgreSQL如何征服大规模数据挑战 在前三期技术专题的铺垫下,我们已经看到PostgreSQL 18/19的内核能力持续增强,向量检索与图查询等AI生态能力快速融合。而真正驱动PostgreSQL完成“单机数据库→综合性数据平台”这一角色跃迁的底层力量,源自云原生架构的深刻变革。 2026年的PostgreSQL分布式生态,正在经历一场从“分片扩展”到“存算分离”的范式迁移。当Citus、Apache Cloudberry等社区主力持续进化的同时,Google Cloud推动的逻辑复制向主动-主动架构演进、阿里云Serverless Pro模式对存算分离的工程化落地,以及EDB、Aurora、YugabyteDB等商业与开源力量的齐头并进,共同勾勒出一幅云原生时代的分布式PostgreSQL全景图。 一、Citus 14.0:将PG 18的力量带到分布式集群 作为PostgreSQL生态中应用最广泛的分片扩展,Citus在2026年2月迎来了14.0版本,其核心使命是完整适配PostgreSQL 18。 1.1 PG 18能力在分布式集群中的“免费午餐” Citus的实现方式决定了它作为PostgreSQL扩展的本质:一个Citus集群本质上是多个独立PostgreSQL实例(协调器+多个工作节点)共同工作。这意味着,一旦Citus与新版PG完成兼容性适配,绝大多数上游改进无需额外开发即可“自动生效”。在Citus 14.0中,PG 18的以下能力被直接带入分布式场景: 异步I/O:分片密集的分布式集群中,顺序扫描、位图堆扫描和VACUUM操作从AIO中获得显著加速;

DBA

第三期:PG 19 新特性全景解读

第三期:PG 19 新特性全景解读 从原生图查询到执行计划“锁死”,2026年最值得关注的数据库版本来了 2026年4月8日,PostgreSQL 19正式进入特性冻结阶段,意味着所有新功能已锁定,后续开发重心全面转向稳定化测试与Bug修复。目标发布时间为2026年9月,Beta测试预计于5月启动。随着Bruce Momjian完成PG 19发布说明的首个草稿,这个年度重磅版本的全貌正逐渐清晰。 PG 19延续了PG社区“插件验证→内核化收敛”的演进路径,多个曾在扩展生态中充分验证的能力正式进入内核——SQL/PGQ图查询、原生REPACK表重整、执行计划锁定等重磅功能同时落地,标志着PostgreSQL在“多模数据平台”的战略方向上迈出了关键一步。 一、SQL/PGQ图查询:关系型数据库的“图思维”革命 1.1 从扩展到内核:图查询的“毕业”时刻 PG 19最受瞩目的新特性,无疑是SQL/PGQ属性图查询的原生支持。此前,在PostgreSQL中实现图查询主要依赖Apache AGE扩展、AgensGraph分支或pgRouting算法库。PG 19将图查询能力直接纳入内核,用户无需安装任何扩展,即可使用标准SQL语法在PostgreSQL内部执行属性图查询。 SQL:2023标准引入了SQL/PGQ,首次允许关系型数据库将图遍历视为一等公民的声明式操作。PG 19对这一标准的落地,不仅是语法层面的支持,更是PostgreSQL从关系型数据库向多模数据平台演进的重要里程碑。 1.2

DBA

第二期:PostgreSQL向量检索深度剖析——从pgvector到VectorChord

第二期:PostgreSQL向量检索深度剖析——从pgvector到VectorChord 当向量检索从“能用”走向“好用”,PG生态如何重塑AI应用的数据底座 在第一期中,我们提到PostgreSQL正在经历一场从关系型数据库到综合性数据平台的深刻转型。而这场转型最核心的驱动力之一,正是向量检索能力的爆发。2026年,PostgreSQL在向量检索赛道上已完成从“追赶到引领”的角色转换。根据DB-Engines 2025年11月的数据,PostgreSQL在向量数据库细分赛道中已直接冲进前三——与专业向量数据库同台竞技。这背后,是PG社区与生态力量合力完成的一场关于效率、成本和架构的全面进化。 一、pgvector:从奠基者到持续进化的“事实标准” 1.1 为何pgvector成为AI工作流的中心? pgvector之所以能在短短几年内成为AI应用开发的事实标准,核心原因在于它让向量检索与关系型数据库的能力实现了“无缝对接”。开发者可以在一个PostgreSQL实例中同时处理以下需求: 存储文本的embedding向量,并在其上构建相似度搜索; 关联用户ID、商品类别、状态等元数据进行复杂过滤; 利用ACID事务保证数据一致性; 借助Point-in-Time Recovery(PITR,即时间点恢复)、流复制等高可用特性保障生产稳定。 对大多数企业级AI应用而言,这些能力远比纯粹的向量检索性能更重要。 1.2 索引体系:IVFFlat与HNSW的选择之道 pgvector提供两类核心近似最近邻(ANN)索引,分别对应不同的使用场景: IVFFlat(倒排文件索引):将向量空间划分为多个聚类(lists)。查询时只搜索与目标向量最近的若干聚类,而非全表扫描。构建速度快,内存占用低,适合数据频繁更新的场景。 HNSW(分层导航小世界):构建多层图结构,查询时从顶层向下贪婪搜索。检索精度更高,但构建时间显著更长,内存消耗更大。 两者之间不存在“绝对优胜”,真正有意义的权衡在于:你的数据更新频率有多高、可接受的内存预算有多少、以及业务要求的召回率和延迟标准是什么。

[quads id="805"]
Scroll to Top