标签

PostgreSQL

PostgreSQL block_size:那个你改不了的参数,却决定了存储的一切

来源:postgr.es 37
在 PostgreSQL 的配置参数海洋里,有一类参数安静地躺在文档的 "Preset Options" 区域——它们从集群初始化那一刻起就写定了,运行时看得到,改不了。 就是其中最值得深挖的一个。它告诉你 PostgreSQL 的一个数据页(page)有多大,默认 8192 字节,也就是 8KB。这个数字看似平淡,但它从磁盘布局到缓冲池管理、从索引分...

PostgreSQL bgwriter 的核心杠杆:lru_maxpages 与 lru_multiplier 调优实战

来源:postgr.es 28
PostgreSQL 的后台写入器(background writer)每隔一轮醒来,要决定写多少脏页。 控制它多久醒一次,但真正决定"写什么、写多少"的杠杆,是 和 这两个参数。理解它们的算法,才能把缓冲区的清洗节奏调到不拖后端查询、也不白白刷盘的位置。 把算法压缩成一句话:本轮写多少页 = min(近期新分配缓冲区数 × multiplier, m...

PostgreSQL 后台写进程调优:bgwriter_delay 与 bgwriter_flush_after

来源:postgr.es 23
PostgreSQL 的后台写进程(background writer)是缓冲池与磁盘之间的"节奏控制器"。它不替你做 checkpoint,也不替你做 fsync——它的职责是在 checkpoint 间隙,以可控的节奏把脏页推到操作系统写回队列,避免突发 I/O 把存储压垮。控制这个节奏的核心参数有四个 GUC,本文先拆前两个: 定义了进程的"心跳...

pgcrypto 里藏了二十年的两个 RCE,AI fuzzer 一个周末就揪出来了

来源:postgr.es 23
PostgreSQL 的 pgcrypto 扩展,很多项目拿来加密存储密码、签名数据,默认就觉得"加密模块应该是安全的"。结果:两个远程代码执行漏洞从 2005 年一直活到 2025 年,二十年无人发现,最后被一个 AI 驱动的 fuzzer 在一个周末内挖了出来。这件事值得每个用 PostgreSQL 的人认真看一眼。 pgcrypto 是 Post...

PostgreSQL 五个版本同时更新:11 个安全漏洞与 60+ 缺陷修复,PG 14 进入倒计时

来源:oschina.net 31
PostgreSQL 全球开发组一次性推送了所有受支持版本的补丁更新——18.4、17.10、16.14、15.18 和 14.23。这批更新打包修复了 11 个安全漏洞和 60 多个已知缺陷。对于生产环境运维来说,这不是"有空再看看"的公告,而是需要尽快评估升级优先级的行动信号。 11 个安全漏洞的具体细节在发行说明中逐条列出,涉及权限提升、信息泄露...

用 backtrace_functions 抓 PostgreSQL 内部函数的 C 调用栈

来源:postgr.es 34
PostgreSQL 报出一个内部错误————日志里只有这一行,没有上下文调用链,没有线索告诉你是哪条路径触发了这个异常。排查这类问题往往要靠猜,或者翻源码逐行推理。 从 PostgreSQL 13 起,有一个低调的 GUC 参数能直接在日志里打出 C 级别的栈回溯:。指定函数名,PostgreSQL 在执行到该函数时自动把完整调用栈写进日志。Chri...

ORDER BY 的两条暗道:你以为排的是别名,其实排的是原列

来源:postgr.es 19
写 SQL 的人每天都在用 ,绝大多数时候它表现得像一条直线——写个列名,结果就按那列排。但一旦别名和原列在表达式、大小写或修饰符上产生分歧,Postgres 会悄悄切换到另一条解析路径,而你毫不知情。 先看一道谜题。建一张四行小表: 猜猜这两条查询的输出顺序: 直觉会说:结果集相同,只是排序依据不同,所以行顺序应该不一样。实际答案是——完全相同的行,...

PostgreSQL 一次性修补 11 个 CVE——三个评分 8.8,该升级了

来源:postgr.es 19
2026 年 5 月 14 日,PostgreSQL 同时发布五个版本:18.4、17.10、16.14、15.18、14.23。这次更新修补了 11 个安全漏洞和超过 60 个一般缺陷。11 个 CVE 是 PostgreSQL 历史上单次发布最大的安全补丁批次,其中三个评分达到 CVSS 8.8,且具备可被实际利用的攻击路径——不是理论风险,是有人...

PostgreSQL 19 的 PARTITION MERGE/SPLIT:这次锁对了

来源:postgr.es 28
PostgreSQL 的分区表功能逐年增强,但有一个操作一直让运维人员头疼——合并和拆分已有分区。早期版本曾尝试引入 和 ,却因为锁策略过于激进,在实际生产中几乎没法用。PostgreSQL 19 把这两条命令重新带回,核心改进就一个字:锁。新实现大幅缩小了阻塞范围,让分区重组终于可以在业务运行期间安全执行。 PostgreSQL 早期版本(具体是 v...