存储参数

关系特定的用户可定义属性

存储参数 (也称为“relopts”、“reloptions”或“relation options”) 是关系特定的参数,它们会修改 PostgreSQL 与该关系交互的方式,例如 fillfactor,它决定了为将来的更新在表的页面上留出多少空间,或者定义自定义的 autovacuum 设置。

一些(但不是全部)存储参数会映射到一个相应的 GUC,这使得 GUC 可以应用于具有自定义值的单个关系。

存储参数是在 PostgreSQL 8.2 中引入的。

表存储参数及引入版本

参数 始于
autovacuum_enabled, toast.autovacuum_enabled 8.4
autovacuum_analyze_scale_factor 8.4
autovacuum_analyze_threshold 8.4
autovacuum_freeze_max_age, toast.autovacuum_freeze_max_age 8.4
autovacuum_freeze_min_age, toast.autovacuum_freeze_min_age 8.4
autovacuum_freeze_table_age, toast.autovacuum_freeze_table_age 8.4
autovacuum_multixact_freeze_min_age, toast.autovacuum_multixact_freeze_min_age 9.3
autovacuum_multixact_freeze_max_age, toast.autovacuum_multixact_freeze_max_age 9.3
autovacuum_multixact_freeze_table_age, toast.autovacuum_multixact_freeze_table_age 9.3
autovacuum_vacuum_cost_delay, toast.autovacuum_vacuum_cost_delay 8.4
autovacuum_vacuum_cost_limit, toast.autovacuum_vacuum_cost_limit 8.4
autovacuum_vacuum_insert_scale_factor, toast.autovacuum_vacuum_insert_scale_factor 13
autovacuum_vacuum_insert_threshold, toast.autovacuum_vacuum_insert_threshold 13
autovacuum_vacuum_max_threshold, toast.autovacuum_vacuum_max_threshold 18
autovacuum_vacuum_scale_factor, toast.autovacuum_vacuum_scale_factor 8.4
autovacuum_vacuum_threshold, toast.autovacuum_vacuum_threshold 8.4
fillfactor 8.2
log_autovacuum_min_duration, toast.log_autovacuum_min_duration 9.2
parallel_workers 9.6
toast_tuple_target 11
user_catalog_table 9.4
vacuum_index_cleanup, toast.vacuum_index_cleanup 12
vacuum_max_eager_freeze_failure_rate, toast.vacuum_max_eager_freeze_failure_rate 18
vacuum_truncate, toast.vacuum_truncate 12

变更历史

示例

创建表时可以设置存储参数,例如:

CREATE TABLE foo (id INT) WITH (fillfactor=75, log_autovacuum_min_duration=10)

并使用例如修改:

ALTER TABLE foo SET (log_autovacuum_min_duration=50)

关系的存储参数记录在其 pg_class 条目中的 reloptions 列(类型为 TEXT[]),并且可以在 psql 中使用 \d+ relname 显示。

postgres=# \d+ foo
                                    Table "public.foo"
 Column |  Type   | Collation | Nullable | Default | Storage | Stats target | Description 
--------+---------+-----------+----------+---------+---------+--------------+-------------
 id     | integer |           |          |         | plain   |              | 
Access method: heap
Options: fillfactor=75, log_autovacuum_min_duration=50

或者直接使用例如检查:

postgres=# SELECT unnest(reloptions) FROM pg_class WHERE oid = 'foo'::REGCLASS;
             unnest
--------------------------------
 fillfactor=75
 log_autovacuum_min_duration=50
(2 rows)

或者使用函数 pg_options_to_table() (适用于 PostgreSQL 9.1 及更高版本)

postgres=# SELECT option_name, option_value
             FROM pg_class c, pg_options_to_table(c.reloptions)
            WHERE c.oid = 'foo'::REGCLASS;
         option_name         | option_value 
-----------------------------+--------------
 log_autovacuum_min_duration | 50
 fillfactor                  | 75
(2 rows)

分类

DDL, 性能, 存储参数 (relopt)

反馈

请在此处提交关于“存储参数”的任何评论、建议或更正 此处.