我正在使用 PostgreSQL 数据库,其中需要存储与特定键相关联的数值。
随着时间的推移,我会根据密钥不断添加这个值。
我想确保表不会因多个行版本或死元组而变得臃肿,特别是因为这个更新操作会很频繁(比如 100 req/s)。
PostgreSQL 中实现此目的的最佳实践是什么?
我应该使用 INSERT ON CONFLICT、触发器还是其他方法?
我如何确保我的表保持高效并且不会因频繁更新而出现过度膨胀?
我正在使用 PostgreSQL 数据库,其中需要存储与特定键相关联的数值。
随着时间的推移,我会根据密钥不断添加这个值。
我想确保表不会因多个行版本或死元组而变得臃肿,特别是因为这个更新操作会很频繁(比如 100 req/s)。
PostgreSQL 中实现此目的的最佳实践是什么?
我应该使用 INSERT ON CONFLICT、触发器还是其他方法?
我如何确保我的表保持高效并且不会因频繁更新而出现过度膨胀?
您需要确保这些更新成为热更新。这样 PostgreSQL 就可以更有效地删除死元组(无法避免),这样您就不会出现表膨胀。
为此
fillfactor
创建表时,将其设置为 100 以下的值确保数字列未被索引
您必须将设置值设置得有多低,
fillfactor
取决于表行的大小以及您在单个语句中修改的行数。对于小行和单行更新,90 就足够了。