↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

PostgreSQL 资讯

保留原始来源与发布日期的新闻、博客和活动。

导入时自带 id,序列就会停在原地

发布于 2026-09-10T10:59:48.871968Z · seedfa.st 序列 标识列

用 INSERT 显式指定 id 时,serial 或 GENERATED AS IDENTITY 的默认值根本不会求值,序列停在原地,表却一直在长。于是导入全程成功,应用发出的第一条插入却撞上主键冲突。Mikhail Shytsko 给出的修法是 setval 配合 pg_get_serial_sequence(),而不是硬写序列名;空表要用三参数形式避免静默失败,标识列则直接 ALTER TABLE ... RESTART WITH。

阅读更多……

lock_timeout 只该给迁移角色设,还要配重试

发布于 2026-09-10T10:59:48.867325Z · thebuild.com DDL 参数 锁

lock_timeout 限定一条语句等待某个重量级锁的时长,超时报 55P03,默认 0 即不限制。它与 statement_timeout 的区别在于只管等待,锁一旦拿到就可以一直持有;deadlock_timeout 默认一秒后才记录锁等待,把 lock_timeout 设得更低,语句会在留下日志之前就失败。Christophe Pettus 建议只给迁移角色和工具设 1 到 3 秒并配重试,注意每次取锁各算一次超时。

阅读更多……

时间旅行者的主键:UUIDv7 与 Snowflake 的实测

发布于 2026-09-10T10:59:48.863468Z · pgEdge 博客 UUID 主键 索引

随机的 UUIDv4 会把 B-tree 索引搅得七零八落:插入位置不可预测,页面在随机处反复分裂,留下一堆半空页。Shaun Thomas 在 100 万行上量了三种主键:随机 UUID 索引 38 MB,叶页填充率 71.53%,碎片率 49.89%;UUIDv7 把毫秒时间戳放在高位,索引 30 MB,填充率 89.98%,零碎片;Snowflake 式 BIGINT 只要 21 MB。单机系统仍该用序列。

阅读更多……

pg_statviz 1.2 支持 PostgreSQL 19 并新增锁阻塞模块

发布于 2026-09-10T10:59:48.808453Z · 个人博客 PG19 扩展 监控

Jimmy Angelakos 发布 pg_statviz 1.2。这个扩展与命令行工具的组合做内部统计的时序分析与可视化,全部在库内完成,不需要外部代理或常驻连接。新版支持 PostgreSQL 19 的新 WAL 指标与配置项,覆盖 13 到 19 beta3;新增阻塞锁分析模块,用 pg_blocking_pids() 按锁类型追踪阻塞方;AI 集成新增 OpenAI 及兼容服务。

阅读更多……

共享哈希表做并行聚合,倾斜一来就全盘皆输

发布于 2026-09-10T10:59:48.803002Z · pgEdge 博客 基准 并行 聚合

PostgreSQL 目前的并行聚合走部分聚合加最终聚合,数据压不下去时,重新分组的最终阶段会吃掉大部分执行时间。Andrei Lepikhov 试了让所有 worker 直接更新一张共享哈希表:48 核机器上八个 worker,分布均匀时快 4.82 倍,2% 倾斜时 4.49 倍,但 80-20 分布已经打平,热点占到 95% 时只剩 0.04 倍。他的结论是进程模型为共享可变状态付出的代价远高于线程模型,不如按分组哈希做分区。

阅读更多……

pg_shmemviz 把共享内存快照画进浏览器

发布于 2026-09-10T10:59:48.80046Z · 个人博客 共享内存 工具 调试

Bertrand Drouvot 发布调试工具 pg_shmemviz:它不附着到运行中的服务器,而是对共享内存做一次顺序无锁复制存成离线快照,再用浏览器交互查看。四个视图分别是分配布局图、借 DWARF 信息展开结构体字段与填充的检查器、按字段分类的原始字节面板,以及可选的 pg_buffercache 摘要,还能比对两次快照。需要带调试符号的构建,作者明确不要在生产实例上跑。

阅读更多……

把 SQL Server 的多语言全文检索迁到 PostgreSQL

发布于 2026-09-10T10:59:48.79743Z · AWS 数据库博客 全文检索 迁移

Ken Zhang 梳理了多语言全文检索从 SQL Server 迁到 Aurora PostgreSQL 或 RDS 时的结果差异。SQL Server 用列语言、停用词表和重音敏感设置统一管理排序规则与检索,PostgreSQL 则把排序规则和文本搜索配置分开。文章覆盖八种语言的分词,用 unaccent 与 ICU 做不区分重音的检索,用 pg_bigm 给中日韩文本建二元组索引。托管环境装不了自定义词典是主要限制。

阅读更多……