pg_set_relation_stats()

更新关系级统计信息的函数
此条目涉及 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() 主要用于测试不同统计信息集对计划程序的影响,以了解或预测计划更改。请注意,VACUUMANALYZE 操作可能会覆盖使用此函数进行的任何更改。

更改历史

示例

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)

请注意,如果对表执行了任何 VACUUMANALYZEautovacuum 操作,则 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)

分类

服务器统计信息系统函数

另请参阅

pg_clear_relation_stats()pg_restore_relation_stats()pg_set_attribute_stats()

反馈

提交任何关于 "pg_set_relation_stats()" 的评论、建议或更正 此处