发布于 2026-09-10T10:59:39.531922Z · Radim Marek · boringsql.com

更新一行就要改所有索引,是 PostgreSQL 写放大的主要来源,HOT 更新是它的逃生口。Radim Marek 梳理触发条件:新元组要放得进同一页面,且被修改的列都没有索引,缺一不可。写多的表可以把 fillfactor 从默认的 100 降到 80 到 90,给 HOT 链留空间,代价是多占存储。效果看 pg_stat_user_tables 里 HOT 更新数与总更新数的比值,比例下滑就该查。长事务会阻止页面裁剪。
更新一行就要改所有索引,是 PostgreSQL 写放大的主要来源,HOT 更新是它的逃生口。Radim Marek 梳理触发条件:新元组要放得进同一页面,且被修改的列都没有索引,缺一不可。写多的表可以把 fillfactor 从默认的 100 降到 80 到 90,给 HOT 链留空间,代价是多占存储。效果看 pg_stat_user_tables 里 HOT 更新数与总更新数的比值,比例下滑就该查。长事务会阻止页面裁剪。
来源记录
- center.info_item · 17bd1546692c4109 · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · 17bd1546692c4109 · 2026-10-03T04:08:55.967155Z