pg_column_size() 报的是存储大小不是内容长度
pg_column_size() 报的是一个值实际占的存储字节数,不是内容长度。Lætitia AVROT 演示了两处容易踩空的地方:一万个字符压缩后可能只占 125 字节,仍留在主元组里;而一旦被挪到 TOAST 表,主元组里永远只剩 18 字节的指针,与原始数据大小无关。她建议把 pg_column_size() 的物理均值与 length() 的逻辑均值一起算,差距大就说明 TOAST 压缩在起作用。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 18 条。
pg_column_size() 报的是一个值实际占的存储字节数,不是内容长度。Lætitia AVROT 演示了两处容易踩空的地方:一万个字符压缩后可能只占 125 字节,仍留在主元组里;而一旦被挪到 TOAST 表,主元组里永远只剩 18 字节的指针,与原始数据大小无关。她建议把 pg_column_size() 的物理均值与 length() 的逻辑均值一起算,差距大就说明 TOAST 压缩在起作用。
Laurenz Albe 对比了两边的 schema。Oracle 里用户与 schema 一一绑定,PostgreSQL 把两者当作独立概念,对象所有权也可以单独管理。命名空间的划法也不同:Oracle 按 SQL 标准分类,PostgreSQL 把所有类关系对象归在一组,迁移时容易撞名。PostgreSQL 另有 schema 级的 USAGE 与 CREATE 权限,非限定名靠 search_path 解析。
PostgreSQL 15 起,发布可以带列过滤和行过滤,不必再上中间件。Rishika Kasani 介绍的用法是:列过滤把个人健康信息、支付字段挡在源端,行过滤做多租户隔离或按地域分发。过滤在源库发送前生效,受限数据不出源系统,对 HIPAA、PCI DSS 这类合规要求有帮助。同一套 SQL 语法在 Amazon RDS、Aurora 和自建实例上通用。
把分析查询挪到只读副本,主库 CPU 和写延迟立刻缓解,但写入瓶颈一点没动。Matty Stratton 指出写路径的机制不变:每行的 MVCC 开销、每次插入和每条索引项产生的 WAL,以及和 autovacuum 抢资源。加副本反而增加了延迟监控、连接路由和多实例管理的负担,写高峰时副本一落后,读请求又回到主库。真要解决得动存储模型,例如用列式批量处理把每秒 WAL 操作从几十万降到几百。
Ahsan Hadi 演示用 pgEdge MCP Server 管一套分布式 PostgreSQL 集群:每个节点一份 YAML 配置,在 Claude Desktop 里注册成多个 MCP 条目,指向同一个二进制。三个例子分别是查 spock.subscription 看复制健康、比对两节点的列类型与索引定义找模式漂移、用 pg_stat_statements 找最慢的五条查询。服务器默认只读,写操作要显式打开。
补丁系列已全部提交,覆盖顺序扫描、位图堆扫描与 TID 范围扫描,默认关闭以免输出过长。
前三个提交已推送,用于降低 EXPLAIN ANALYZE 的计时开销,ARM 支持留到以后再做。
全局参数为零时表级 reloption 能否覆盖存在分歧,将另开线程继续讨论。
不再依赖扫描期间 NBuffers 保持不变,实测快 10% 到 30%,耗时也更稳定。
totaltime 分配移到 ExecutorStart,插件可申请仪表化级别,实测提速 4% 到 12%。
walreceiver 没给共享内存里的写入与刷新位置设初值,补丁 0001 已获认可。
Andres Freund 指出信号包装层次混乱且不便翻译,功能可能赶不上 PostgreSQL 19。