Author name: Clyde Jin

DBA

SQL 与查询优化(PostgreSQL 篇)· 第七期

SQL 与查询优化(PostgreSQL 篇)· 第七期 查询缓存、连接池与中间件优化 从第一期到第六期,我们的焦点一直围绕单实例 PostgreSQL:执行计划、索引设计、连接算法、统计信息、物化视图与分区表,以及锁与并发控制。但是,当到达了几百万乃至上亿行数据之后,应用程序不仅查询复杂,连接数也可能成千上万。 本期我们跳出数据库内核,进入中间件层,探讨查询缓存、连接池和分布式中间件如何进一步提升系统的极限。 一、连接池 – 高并发的前提 1.1 为什么需要连接池? 在 PostgreSQL 中,每一个新的客户端连接都会在服务器端 fork() 一个新的进程(Backend Process)。一个空闲的数据库连接,即使没有执行任何查询,也会占用大约 5-10 […]

DBA

SQL 与查询优化(PostgreSQL 篇)· 第六期

SQL 与查询优化(PostgreSQL 篇)· 第六期 锁与并发控制 – 查询优化的另一维度 前五期我们专注 SQL 本身:执行计划、统计信息、连接算法、高级 SQL、分区表,以及优化器调参。 但在高并发系统中,锁与事务往往成为性能瓶颈。本期深入 PostgreSQL 的锁机制、MVCC、Vacuum 原理,学会诊断锁冲突、优化高并发写入,让数据库在多用户环境下依然流畅运行。 一、PostgreSQL 的并发控制基石:MVCC PostgreSQL 没有使用传统的两阶段锁(2PL)来避免读写冲突,而是采用了 多版本并发控制(MVCC)。

DBA

SQL 与查询优化(PostgreSQL 篇)· 第五期

SQL 与查询优化(PostgreSQL 篇)· 第五期 查询优化器内部机制与高级调参 前四期我们构建了完整的优化知识体系:执行计划、统计信息、连接算法、高级 SQL、物化视图与分区表。 本期我们钻进优化器的“黑盒”,剖析代价模型、参数开关、并行查询,甚至学会强制执行计划——当你比优化器更懂数据时,这些能力会让你如虎添翼。 一、优化器的工作流程回顾 PostgreSQL 优化器基于代价选择执行计划。流程如下: 解析与重写:SQL → 解析树 → 基于规则的重写(视图展开、常量折叠)。 生成路径:为每个表考虑不同的扫描路径(Seq Scan、Index Scan、Bitmap Scan),为每个

DBA

SQL 与查询优化(PostgreSQL 篇)· 第四期

SQL 与查询优化(PostgreSQL 篇)· 第四期 物化视图、分区表与批量数据优化 前三期我们深入了执行计划、统计信息、连接算法与高级 SQL 能力。本期聚焦数据架构层面的优化:物化视图、分区表以及批量数据处理技巧。 当单表数据量达到亿级,日常查询和分析变得缓慢时,这些技术能让你在不改业务代码的前提下,获得数量级的性能提升。 一、物化视图 – 预计算的艺术 1.1 什么是物化视图? 普通视图只是保存一条查询规则,每次访问都会重新执行查询。而物化视图(Materialized View) 会实际存储查询结果,就像一张真实的表。你可以对其创建索引、分析统计信息,甚至进行 ANALYZE。 适用场景: 报表统计(复杂聚合、多表连接),数据不需要绝对实时(容忍秒级或分钟级延迟)。

DBA

SQL 与查询优化(PostgreSQL 篇)· 第三期

SQL 与查询优化(PostgreSQL 篇)· 第三期 连接优化与统计信息深度调优 经过前两期,你已经能读懂执行计划、用好窗口函数与 CTE。本期进入多表连接优化的核心地带,并深挖优化器的“大脑”——统计信息。 我们将剖析三种连接算法背后的代价模型,学会用扩展统计信息解决多列关联的基数误判,最终通过真实案例把执行时间从分钟级降至毫秒级。 一、连接算法深度解析 – 优化器的三种武器 当查询涉及多个表时,PostgreSQL 优化器需要在 Nested Loop、Hash Join、Merge Join 中做出选择,并决定连接顺序。这个决策的基础是 基数估计(每步返回的行数)与 代价计算。

DBA

SQL 与查询优化(PostgreSQL 篇)· 第二期

SQL 与查询优化(PostgreSQL 篇)· 第二期 窗口函数与 CTE 的深度优化 继第一期掌握执行计划与索引基础后,本期聚焦 SQL 的高级能力:窗口函数(Window Functions) 与 公共表表达式(CTE)。 你将学会如何用它们写出更简洁高效的查询,同时避开常见的性能陷阱——包括 CTE 物化屏障、递归 CTE 的优化技巧,以及窗口函数与索引的协作之道。 一、窗口函数 –

DBA

SQL 与查询优化(PostgreSQL 篇)· 第一期

SQL 与查询优化(PostgreSQL 篇)· 第一期 读懂执行计划 & 索引优化入门 本系列专注于 PostgreSQL 中 SQL 能力的深度挖掘与查询性能调优。 第一期从最核心的工具——执行计划入手,结合统计信息与索引选择,带你建立系统性的优化思维。 一、为什么查询优化如此重要? 很多开发人员写出功能正确的 SQL,却忽略了执行效率。当数据量从万级增长到千万级,一个缺少索引或写法不佳的查询可能导致响应时间从毫秒变成分钟。PostgreSQL 提供了强大的优化器、丰富的索引类型和精准的代价模型,但前提是你要学会如何“引导”它。 优化不是盲目加索引,而是: 看懂执行计划 –

DBA

PostgreSQL 架构原理第六期:性能调优实战 —— 从参数到 SQL 的全链路优化

PostgreSQL 架构原理第六期:性能调优实战 —— 从参数到 SQL 的全链路优化 引言 前五期我们分别剖析了 PostgreSQL 的进程模型、存储引擎、事务与并发控制、查询优化器以及备份恢复体系。理解这些内部机制的根本目的,是能够诊断和解决实际生产环境中的性能问题。本期将把这些知识串联起来,聚焦于性能调优实战,提供一套系统性的方法论。 本文涵盖: 性能调优的顶层思路与测量手段 操作系统与硬件层面的优化要点 PostgreSQL 核心参数详解与配置建议 SQL 改写与索引设计的实战技巧 监控工具与慢查询定位 真实案例:从 30

DBA

PostgreSQL 架构原理第五期:备份与恢复 —— 物理备份、PITR 与复制技术

PostgreSQL 架构原理第五期:备份与恢复 —— 物理备份、PITR 与复制技术 引言 在前四期中,我们从进程模型、存储引擎、事务与并发控制,到查询优化器,逐步深入了解了 PostgreSQL 的内核原理。数据是企业的核心资产,如何保证数据不丢失、如何从灾难中快速恢复、如何实现 7×24 小时高可用,是数据库运维的必修课。 本期将聚焦 PostgreSQL 的备份与恢复体系,涵盖以下内容: 逻辑备份与物理备份的对比与适用场景 基于 WAL 的持续归档与时间点恢复(PITR)原理 pg_basebackup 与低级别基础备份的实现机制

DBA

PostgreSQL 架构原理第四期:查询优化器 —— 统计信息与代价模型

PostgreSQL 架构原理第四期:查询优化器 —— 统计信息与代价模型 引言 在前三期的基础上,我们已经了解了 PostgreSQL 的进程模型、存储引擎以及事务并发控制。从用户提交一条 SQL 到真正执行,中间有一个至关重要的环节——查询优化器。它负责在众多可能的执行路径中,找出预计代价最小的那个执行计划。优化器之所以能做出相对准确的决策,核心依赖于两样东西:表的统计信息 和 代价模型。 本期我们将深入剖析: 统计信息的收集与存储:ANALYZE 命令、pg_statistic 系统表、pg_class 中的基本统计 最常见的数据分布:NULL 分数、唯一值数量、高频值(MCV)、直方图 代价模型中的启动代价、运行代价、总代价以及各种操作的代价估算公式

[quads id="805"]
Scroll to Top