选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

PostgreSQL 博览 RSS 订阅

当天收录 13 条。

PostgreSQL 19 新增三个 pg_get_*_ddl 函数

Hubert depesz Lubaczewskidepesz.com

Andrew Dunstan 在 4 月 5 日提交了三个函数:pg_get_database_ddl()、pg_get_role_ddl() 和 pg_get_tablespace_ddl()。它们都返回 SETOF text,用变参的名值对传选项:pretty 分行排版,owner 带上属主,memberships 输出角色的 GRANT。两点限制要记住:输出里不会包含密码,函数也只重建对象本身,不含库内的表、视图等对象。

pg_prewarm 在超大 shared_buffers 上会崩溃

warda bibiStormatics

PostgreSQL 的 palloc 对单次分配有 1GB 硬上限,而 autoprewarm 转储缓存页时要一次分配整个数组,每条记录 20 字节,算下来 shared_buffers 超过约 429GB 就会越界。700GB 的机器需要约 1.75GB,于是报出 invalid memory alloc request size,后台进程随即陷入每分钟数百次的重启循环。根治要升到 PostgreSQL 16.10 以上。

pgcollection 2.0 支持整数键与范围删除

Jim MlodgenskiJim Mlodgenski 博客

pgcollection 用关联数组帮 Oracle PL/SQL 代码搬到 PostgreSQL。2.0 新增整数键的 icollection,只存显式设过的键,避开原生数组用 NULL 填补稀疏下标的问题,键是 64 位整数、值可以是任意类型。delete() 现在支持删单键、删区间和清空并保留类型。要注意 Oracle 会自动给字符串键排序,pgcollection 保持插入顺序,需要时得自己调 sort()。

表膨胀会在高频写入下悄悄扩散

Jake HertzTigerData 博客

高频写入下,UPDATE 和 DELETE 留下的死元组积累速度会超过 autovacuum 回收的速度,页面碎片化,性能一路下滑。Jake Hertz 指出默认设置要等 20% 的行发生变化才触发清理,对大表意味着可以攒下几百万条死元组。文章给了测量膨胀率的查询,并建议把上亿行的高写入表的 autovacuum_vacuum_scale_factor 降到 0.01 到 0.02,让清理跑得更勤。