PostgreSQL 锁与阻塞分析
PostgreSQL 锁与阻塞全解析:8 种表级锁与 4 种行级锁的冲突矩阵、咨询锁、阻塞链与死锁的形成机制、pg_locks / pg_stat_activity / pg_blocking_pids 诊断手法、DDL 排队与热点行更新等典型场景的解法、lock_timeout 与死锁预防策略。
category
PostgreSQL 锁与阻塞全解析:8 种表级锁与 4 种行级锁的冲突矩阵、咨询锁、阻塞链与死锁的形成机制、pg_locks / pg_stat_activity / pg_blocking_pids 诊断手法、DDL 排队与热点行更新等典型场景的解法、lock_timeout 与死锁预防策略。
PostgreSQL 批量加载全解析:COPY 的三种形态(文件 / STDIN / PROGRAM)、COPY 为何比 INSERT 快几个数量级、synchronous_commit / wal_level / unlogged 表等参数调优、COPY FREEZE 与加载后维护、并行加载与 pg_bulkload、以及应用侧批量写入的实践取舍。
pgvector 实战:vector / halfvec / bit 类型、余弦 / L2 / 内积距离运算符、IVFFlat 与 HNSW 索引选型、lists / probes / m / ef_search 参数调优、标量过滤下的向量检索、向量与全文检索的混合排序(RRF)、以及大规模向量表的性能与运维要点。
Citus 分布式 PostgreSQL 实战:coordinator / worker 架构、分布式表与参考表、分片键选择与共置(colocation)、查询路由与下推、分片再平衡与扩容、高可用与故障恢复、以及 Citus 的适用边界与常见限制。
PostgreSQL 并行查询(Parallel Query)全解析:执行器调用链、Gather / Gather Merge 汇聚节点、并行 Seq Scan 与并行位图扫描、Parallel Hash Join 与 Partial Aggregate、代价模型与并行度决策、max_parallel_workers 等参数调优、并行不安全函数与常见陷阱。
PostgreSQL 声明式分区(Declarative Partitioning)全解析:RANGE / LIST / HASH 三大策略选型、分区裁剪(Partition Pruning)原理与 EXPLAIN 验证、DETACH/ATTACH 在线维护、自动分区与 pg_partman、索引与唯一约束的分区限制、分区数量对计划时间的影响,含生产迁移路径与常见坑。
系统讲解 ClickHouse 容量规划与成本优化:数据量/增长率/保留期/副本数/压缩比构成的容量模型、压缩比实测方法、存储与计算资源配比公式、冷热分层与 TTL 降采样、列裁剪与编码调优、基于 system.parts 的成本监控,以及扩容阈值与告警实践。
面向从 MySQL/PostgreSQL 迁移到 ClickHouse 的开发者:数据类型映射与 Nullable/LowCardinality 取舍、主键与 ORDER BY 的语义错位、JOIN/GROUP BY/子查询/窗口函数的语法差异、常用函数对照表、UPDATE/DELETE 与事务的缺失、迁移工具选型与全流程校验清单。
系统讲解 ClickHouse 的工作负载调度与资源隔离:max_concurrent_queries 并发上限、Quotas 配额限流、Settings Profiles 差异化配置、查询优先级与 Workload 分类、内存/CPU/IO 隔离手段、多租户方案,以及防止单条大查询拖垮集群的落地实践与常见陷阱。
深入 ClickHouse 的数据变更语义:Mutation 的重量级实现与异步执行、Lightweight DELETE/UPDATE 的 _row_exists 掩码机制、删除标记的可见性与合并时机、幂等与并发语义、ReplacingMergeTree 去重替代方案,以及在高频更新场景下的选型与落地建议。
系统讲解 ClickHouse 查询剖析与链路追踪:system.query_log 关键列解读、ProfileEvents 计数、Query Profiler 采样与火焰图、trace_log 开启与表结构、trace_id/span_id 端到端串联、与 OpenTelemetry/Jaeger 集成、内存与执行细节下钻,以及一套可复用的慢查询定位流程。
深入 ClickHouse Projections:与物化视图的本质差异、ALTER TABLE ADD PROJECTION 语法、normal/aggregate 变体的存储结构、后台物化与合并机制、优化器如何自动选择投影、query_plan 验证与强制使用、预聚合收益评估、存储与写入放大代价,以及生产落地中的常见陷阱。
彻底讲清 PostgreSQL 的时区与日期时间:timestamp 与 timestamptz 的内部存储差异、TimeZone 参数与会话时区、AT TIME ZONE 的两种用法、now 与 clock_timestamp 等函数区别、date_trunc 与 date_bin 与 extract 与 to_char 技巧、夏令时不存在与重复时刻的陷阱、interval 与月份边界、generate_series 时间轴、与 JDBC 和 Prisma 的协同配置。
深入 PostgreSQL 物理存储层:数据目录与 relfilenode 命名、1GB 段文件切分、8KB 页的 PageHeaderData 头部字段、ItemIdData 行指针与 HeapTupleHeaderData 元组头部、null bitmap 与对齐填充、fillfactor 与页内空闲空间、FSM 与 VM 映射文件、TOAST 行外存储与四种压缩策略,并用 pageinspect 实测页内容。
系统讲解 PostgreSQL FDW:fdw_handler 与 FdwRoutine 回调架构、postgres_fdw 的 CREATE SERVER 与 USER MAPPING、IMPORT FOREIGN SCHEMA、use_remote_estimate 与 fetch_size 与 async_capable 选项、JOIN 与 ORDER BY 与聚合的下推条件、file_fdw 读 CSV 与日志、dblink 对比、远程事务与两阶段提交、批量写入与网络往返调优。
系统讲解 PostgreSQL 压测方法论:基准与负载与压力与稳定性四类测试的区别、pgbench 初始化与缩放因子、内置与自定义脚本、并发与限流参数、结果指标解读、常见压测误区、用 pg_stat_statements 与等待事件与 iostat 定位瓶颈、环境隔离与可重复性、压测报告模板。
拆解 PostgreSQL 预写日志与崩溃恢复:XLogRecord 与块引用结构、full_page_writes 与 torn page、hint bits、LSN 与 pg_wal 段文件命名、wal_level 三级差异、检查点与 pg_control 记录的 redo 起点、恢复的 analysis 与 redo 流程、pg_waldump 读日志实测、archive_mode 归档与 synchronous_commit 的持久性权衡。
从零开发 PostgreSQL C 扩展:control 文件与版本化 SQL 脚本、PG_MODULE_MAGIC 与 _PG_init、PG_FUNCTION_INFO_V1 与 Datum 调用约定、PG_GETARG 与 PG_RETURN 宏、text 与 bytea 与数组类型处理、palloc 与内存上下文、ereport 与 PG_TRY 错误处理、SPI 执行 SQL、自定义类型与操作符类、PGXS 构建、REGRESS 回归测试与版本兼容。
当内置函数无法满足业务逻辑时,ClickHouse 提供了 SQL UDF 与 executable UDF 两条扩展路径。本文系统讲解 SQL UDF 的 lambda 语法与组合方式、executable UDF 的 XML 配置与进程生命周期、标准输入输出的数据交换格式与类型映射,并用真实压测数据剖析进程级调用的性能边界,最后给出与字典、物化列、物化视图配合的选型建议与踩坑清单。
本文系统讲解 ClickHouse 的内存管理与落盘机制,从查询级与服务级内存限制参数出发,深入 spill to disk 外部聚合与排序、JOIN 内存策略与算法选择、标记缓存与查询缓存占用,并给出基于 system.query_log 的 OOM 排查步骤与熔断队列限额防护方案,最后附生产参数模板与速查表。实测 100GB 聚合可将单机 RSS 从 90GB 压到 12GB。