此条目涉及 PostgreSQL 中的一个功能,该功能是 PostgreSQL 18 的一部分,预计将于 2025 年底发布。
pg_set_relation_stats()
是一个用于更新关系级统计信息的系统函数。
pg_set_relation_stats()
在 PostgreSQL 18 中添加。
用法
pg_set_relation_stats (relation
regclass
[,relpages
integer
] [,reltuples
real
] [,relallvisible
integer
] )
→void
pg_set_relation_stats()
可以由数据库所有者或具有 MAINTAIN
权限的角色执行。
pg_set_relation_stats()
主要用于测试不同统计信息集对计划程序的影响,以了解或预测计划更改。请注意,VACUUM
或 ANALYZE
操作可能会覆盖使用此函数进行的任何更改。
更改历史
- PostgreSQL 18
- 添加 (提交 e839c8ec)
示例
pg_set_relation_stats()
的基本用法示例
postgres=# CREATE TABLE test (id INT, val TEXT); CREATE TABLE postgres=# SELECT pg_set_relation_stats( relation := 'test', relpages := NULL::integer, reltuples := 400.0::real, relallvisible := 4::integer ); pg_set_relation_stats ----------------------- (1 row) postgres=# SELECT relpages, reltuples, relallvisible FROM pg_class WHERE oid = 'test'::regclass; relpages | reltuples | relallvisible ----------+-----------+--------------- 0 | 400 | 4 (1 row)
请注意,如果对表执行了任何 VACUUM
、ANALYZE
或 autovacuum
操作,则 pg_set_relation_stats()
设置的任何统计信息都将被覆盖。
postgres=# INSERT INTO test VALUES (generate_series(1,100)); INSERT 0 100 postgres=# ANALYZE test; ANALYZE postgres=# SELECT relpages, reltuples, relallvisible FROM pg_class WHERE oid = 'test'::regclass; relpages | reltuples | relallvisible ----------+-----------+--------------- 1 | 100 | 0 (1 row)
参考文献
- PostgreSQL 18 文档: 数据库对象统计信息操作函数