↑↓ select↵ open⌫ change scopeOpen full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

Wiki / Storage Parameters

Storage Parameters

Version coverage matrix

Definitions for PostgreSQL 18

Reading PG 18·Select a recorded version

56 / 56 recorded definitionsA filled square means the entry is documented in that version. Select one to read it there.
  • autosummarizeBRIN indexes10 – 20

    Defines whether a summarization run is queued for the previous page range whenever an insertion is detected on the next one (see Section 65.5.1.1 for more details). The default is off .

  • autovacuum_analyze_scale_factorTables and materialized views10 – 20

    Per-table value for autovacuum_analyze_scale_factor parameter.

  • autovacuum_analyze_thresholdTables and materialized views10 – 20

    Per-table value for autovacuum_analyze_threshold parameter.

  • autovacuum_enabledTables and materialized views10 – 20

    Enables or disables the autovacuum daemon for a particular table. If true, the autovacuum daemon will perform automatic VACUUM and/or ANALYZE operations on this table following the rules discussed in Section 24.1.6 . If false, this table will not be autovacuumed, except to prevent transaction ID wraparound. See Section 24.1.5 for more about wraparound prevention. Note that the autovacuum daemon does not run at all (except to prevent transaction ID wraparound) if the autovacuum parameter is false; setting individual tables' storage parameters does not override that. Therefore there is seldom much point in explicitly setting this storage parameter to true , only to false .

  • autovacuum_freeze_max_ageTables and materialized views10 – 20

    Per-table value for autovacuum_freeze_max_age parameter. Note that autovacuum will ignore per-table autovacuum_freeze_max_age parameters that are larger than the system-wide setting (it can only be set smaller).

  • autovacuum_freeze_min_ageTables and materialized views10 – 20

    Per-table value for vacuum_freeze_min_age parameter. Note that autovacuum will ignore per-table autovacuum_freeze_min_age parameters that are larger than half the system-wide autovacuum_freeze_max_age setting.

  • autovacuum_freeze_table_ageTables and materialized views10 – 20

    Per-table value for vacuum_freeze_table_age parameter.

  • autovacuum_multixact_freeze_max_ageTables and materialized views10 – 20

    Per-table value for autovacuum_multixact_freeze_max_age parameter. Note that autovacuum will ignore per-table autovacuum_multixact_freeze_max_age parameters that are larger than the system-wide setting (it can only be set smaller).

  • autovacuum_multixact_freeze_min_ageTables and materialized views10 – 20

    Per-table value for vacuum_multixact_freeze_min_age parameter. Note that autovacuum will ignore per-table autovacuum_multixact_freeze_min_age parameters that are larger than half the system-wide autovacuum_multixact_freeze_max_age setting.

  • autovacuum_multixact_freeze_table_ageTables and materialized views10 – 20

    Per-table value for vacuum_multixact_freeze_table_age parameter.

  • autovacuum_vacuum_cost_delayTables and materialized views10 – 20

    Per-table value for autovacuum_vacuum_cost_delay parameter.

  • autovacuum_vacuum_cost_limitTables and materialized views10 – 20

    Per-table value for autovacuum_vacuum_cost_limit parameter.

  • autovacuum_vacuum_insert_scale_factorTables and materialized views13 – 20

    Per-table value for autovacuum_vacuum_insert_scale_factor parameter.

  • autovacuum_vacuum_insert_thresholdTables and materialized views13 – 20

    Per-table value for autovacuum_vacuum_insert_threshold parameter. The special value of -1 may be used to disable insert vacuums on the table.

  • autovacuum_vacuum_max_thresholdTables and materialized views18 – 20

    Per-table value for autovacuum_vacuum_max_threshold parameter.

    1011121314151617181920
  • autovacuum_vacuum_scale_factorTables and materialized views10 – 20

    Per-table value for autovacuum_vacuum_scale_factor parameter.

  • autovacuum_vacuum_thresholdTables and materialized views10 – 20

    Per-table value for autovacuum_vacuum_threshold parameter.

  • bufferingGiST indexes10 – 20

    Controls whether the buffered build technique described in Section 65.2.4.1 is used to build the index. With OFF buffering is disabled, with ON it is enabled, and with AUTO it is initially disabled, but is turned on on-the-fly once the index size reaches effective_cache_size . The default is AUTO . Note that if sorted build is possible, it will be used instead of buffered build unless buffering=ON is specified.

  • check_optionView options10 – 20

    This parameter may be either local or cascaded , and is equivalent to specifying WITH [ CASCADED | LOCAL ] CHECK OPTION (see below).

  • deduplicate_itemsB-tree indexes13 – 20

    Controls usage of the B-tree deduplication technique described in Section 65.1.4.3 . Set to ON or OFF to enable or disable the optimization. (Alternative spellings of ON and OFF are allowed as described in Section 19.1 .) The default is ON . Turning deduplicate_items off via ALTER INDEX prevents future insertions from triggering deduplication, but does not in itself make existing posting list tuples use the standard tuple representation.

  • fastupdateGIN indexes10 – 20

    Controls usage of the fast update technique described in Section 65.4.4.1 . ON enables fast update, OFF disables it. The default is ON . Turning fastupdate off via ALTER INDEX prevents future insertions from going into the list of pending index entries, but does not in itself flush existing entries. You might want to VACUUM the table or call the gin_clean_pending_list function afterward to ensure the pending list is emptied.

  • fillfactorB-tree indexes10 – 20

    Controls how full the index method will try to pack index pages. For B-trees, leaf pages are filled to this percentage during initial index builds, and also when extending the index at the right (adding new largest key values). If pages subsequently become completely full, they will be split, leading to fragmentation of the on-disk index structure. B-trees use a default fillfactor of 90, but any integer value from 10 to 100 can be selected. B-tree indexes on tables where many inserts and/or updates are anticipated can benefit from lower fillfactor settings at CREATE INDEX time (following bulk loading into the table). Values in the range of 50 - 90 can usefully “ smooth out ” the rate of page splits during the early life of the B-tree index (lowering fillfactor like this may even lower the absolute number of page splits, though this effect is highly workload dependent). The B-tree bottom-up index deletion technique described in Section 65.1.4.2 is dependent on having some “ extra ” space on pages to store “ extra ” tuple versions, and so can be affected by fillfactor (though the effect is usually not significant). In other specific cases it might be useful to increase fillfactor to 100 at CREATE INDEX time as a way of maximizing space utilization. You should only consider this when you are completely sure that the table is static (i.e. that it will never be affected by either inserts or updates). A fillfactor setting of 100 otherwise risks harming performance: even a few updates or inserts will cause a sudden flood of page splits. The other index methods use fillfactor in different but roughly analogous ways; the default fillfactor varies between methods.

  • fillfactorGiST indexes10 – 20

    Controls how full the index method will try to pack index pages. For B-trees, leaf pages are filled to this percentage during initial index builds, and also when extending the index at the right (adding new largest key values). If pages subsequently become completely full, they will be split, leading to fragmentation of the on-disk index structure. B-trees use a default fillfactor of 90, but any integer value from 10 to 100 can be selected. B-tree indexes on tables where many inserts and/or updates are anticipated can benefit from lower fillfactor settings at CREATE INDEX time (following bulk loading into the table). Values in the range of 50 - 90 can usefully “ smooth out ” the rate of page splits during the early life of the B-tree index (lowering fillfactor like this may even lower the absolute number of page splits, though this effect is highly workload dependent). The B-tree bottom-up index deletion technique described in Section 65.1.4.2 is dependent on having some “ extra ” space on pages to store “ extra ” tuple versions, and so can be affected by fillfactor (though the effect is usually not significant). In other specific cases it might be useful to increase fillfactor to 100 at CREATE INDEX time as a way of maximizing space utilization. You should only consider this when you are completely sure that the table is static (i.e. that it will never be affected by either inserts or updates). A fillfactor setting of 100 otherwise risks harming performance: even a few updates or inserts will cause a sudden flood of page splits. The other index methods use fillfactor in different but roughly analogous ways; the default fillfactor varies between methods.

  • fillfactorHash indexes10 – 20

    Controls how full the index method will try to pack index pages. For B-trees, leaf pages are filled to this percentage during initial index builds, and also when extending the index at the right (adding new largest key values). If pages subsequently become completely full, they will be split, leading to fragmentation of the on-disk index structure. B-trees use a default fillfactor of 90, but any integer value from 10 to 100 can be selected. B-tree indexes on tables where many inserts and/or updates are anticipated can benefit from lower fillfactor settings at CREATE INDEX time (following bulk loading into the table). Values in the range of 50 - 90 can usefully “ smooth out ” the rate of page splits during the early life of the B-tree index (lowering fillfactor like this may even lower the absolute number of page splits, though this effect is highly workload dependent). The B-tree bottom-up index deletion technique described in Section 65.1.4.2 is dependent on having some “ extra ” space on pages to store “ extra ” tuple versions, and so can be affected by fillfactor (though the effect is usually not significant). In other specific cases it might be useful to increase fillfactor to 100 at CREATE INDEX time as a way of maximizing space utilization. You should only consider this when you are completely sure that the table is static (i.e. that it will never be affected by either inserts or updates). A fillfactor setting of 100 otherwise risks harming performance: even a few updates or inserts will cause a sudden flood of page splits. The other index methods use fillfactor in different but roughly analogous ways; the default fillfactor varies between methods.

  • fillfactorSP-GiST indexes10 – 20

    Controls how full the index method will try to pack index pages. For B-trees, leaf pages are filled to this percentage during initial index builds, and also when extending the index at the right (adding new largest key values). If pages subsequently become completely full, they will be split, leading to fragmentation of the on-disk index structure. B-trees use a default fillfactor of 90, but any integer value from 10 to 100 can be selected. B-tree indexes on tables where many inserts and/or updates are anticipated can benefit from lower fillfactor settings at CREATE INDEX time (following bulk loading into the table). Values in the range of 50 - 90 can usefully “ smooth out ” the rate of page splits during the early life of the B-tree index (lowering fillfactor like this may even lower the absolute number of page splits, though this effect is highly workload dependent). The B-tree bottom-up index deletion technique described in Section 65.1.4.2 is dependent on having some “ extra ” space on pages to store “ extra ” tuple versions, and so can be affected by fillfactor (though the effect is usually not significant). In other specific cases it might be useful to increase fillfactor to 100 at CREATE INDEX time as a way of maximizing space utilization. You should only consider this when you are completely sure that the table is static (i.e. that it will never be affected by either inserts or updates). A fillfactor setting of 100 otherwise risks harming performance: even a few updates or inserts will cause a sudden flood of page splits. The other index methods use fillfactor in different but roughly analogous ways; the default fillfactor varies between methods.

  • fillfactorTables and materialized views10 – 20

    The fillfactor for a table is a percentage between 10 and 100. 100 (complete packing) is the default. When a smaller fillfactor is specified, INSERT operations pack table pages only to the indicated percentage; the remaining space on each page is reserved for updating rows on that page. This gives UPDATE a chance to place the updated copy of a row on the same page as the original, which is more efficient than placing it on a different page, and makes heap-only tuple updates more likely. For a table whose entries are never updated, complete packing is the best choice, but in heavily updated tables smaller fillfactors are appropriate. This parameter cannot be set for TOAST tables.

  • gin_pending_list_limitGIN indexes10 – 20

    Overrides the global setting of gin_pending_list_limit for this index. This value is specified in kilobytes.

  • log_autovacuum_min_durationTables and materialized views10 – 20

    Per-table value for log_autovacuum_min_duration parameter.

  • oidsTable compatibility options10 – 20

    This clause specifies optional storage parameters for a table or index; see Storage Parameters below for more information. For backward-compatibility the WITH clause for a table can also include OIDS=FALSE to specify that rows of the new table should not contain OIDs (object identifiers), OIDS=TRUE is not supported anymore.

  • pages_per_rangeBRIN indexes10 – 20

    Defines the number of table blocks that make up one block range for each entry of a BRIN index (see Section 65.5.1 for more details). The default is 128 .

  • parallel_workersTables and materialized views10 – 20

    This sets the number of workers that should be used to assist a parallel scan of this table. If not set, the system will determine a value based on the relation size. The actual number of workers chosen by the planner or by utility statements that use parallel scans may be less, for example due to the setting of max_worker_processes .

  • security_barrierView options10 – 20

    This should be used if the view is intended to provide row-level security. See Section 39.5 for full details.

  • security_invokerView options15 – 20

    This option causes the underlying base relations to be checked against the privileges of the user of the view rather than the view owner. See the notes below for full details.

    1011121314151617181920
  • toast.autovacuum_enabledTOAST tables10 – 20

    Enables or disables the autovacuum daemon for a particular table. If true, the autovacuum daemon will perform automatic VACUUM and/or ANALYZE operations on this table following the rules discussed in Section 24.1.6 . If false, this table will not be autovacuumed, except to prevent transaction ID wraparound. See Section 24.1.5 for more about wraparound prevention. Note that the autovacuum daemon does not run at all (except to prevent transaction ID wraparound) if the autovacuum parameter is false; setting individual tables' storage parameters does not override that. Therefore there is seldom much point in explicitly setting this storage parameter to true , only to false .

  • toast.autovacuum_freeze_max_ageTOAST tables10 – 20

    Per-table value for autovacuum_freeze_max_age parameter. Note that autovacuum will ignore per-table autovacuum_freeze_max_age parameters that are larger than the system-wide setting (it can only be set smaller).

  • toast.autovacuum_freeze_min_ageTOAST tables10 – 20

    Per-table value for vacuum_freeze_min_age parameter. Note that autovacuum will ignore per-table autovacuum_freeze_min_age parameters that are larger than half the system-wide autovacuum_freeze_max_age setting.

  • Per-table value for vacuum_freeze_table_age parameter.

  • Per-table value for autovacuum_multixact_freeze_max_age parameter. Note that autovacuum will ignore per-table autovacuum_multixact_freeze_max_age parameters that are larger than the system-wide setting (it can only be set smaller).

  • Per-table value for vacuum_multixact_freeze_min_age parameter. Note that autovacuum will ignore per-table autovacuum_multixact_freeze_min_age parameters that are larger than half the system-wide autovacuum_multixact_freeze_max_age setting.

  • Per-table value for vacuum_multixact_freeze_table_age parameter.

  • Per-table value for autovacuum_vacuum_cost_delay parameter.

  • Per-table value for autovacuum_vacuum_cost_limit parameter.

  • Per-table value for autovacuum_vacuum_insert_scale_factor parameter.

  • Per-table value for autovacuum_vacuum_insert_threshold parameter. The special value of -1 may be used to disable insert vacuums on the table.

  • Per-table value for autovacuum_vacuum_max_threshold parameter.

    1011121314151617181920
  • Per-table value for autovacuum_vacuum_scale_factor parameter.

  • Per-table value for autovacuum_vacuum_threshold parameter.

  • Per-table value for log_autovacuum_min_duration parameter.

  • toast.vacuum_index_cleanupTOAST tables12 – 20

    Forces or disables index cleanup when VACUUM is run on this table. The default value is AUTO . With OFF , index cleanup is disabled, with ON it is enabled, and with AUTO a decision is made dynamically, each time VACUUM runs. The dynamic behavior allows VACUUM to avoid needlessly scanning indexes to remove very few dead tuples. Forcibly disabling all index cleanup can speed up VACUUM very significantly, but may also lead to severely bloated indexes if table modifications are frequent. The INDEX_CLEANUP parameter of VACUUM , if specified, overrides the value of this option.

  • Per-table value for vacuum_max_eager_freeze_failure_rate parameter.

    1011121314151617181920
  • toast.vacuum_truncateTOAST tables12 – 20

    Per-table value for vacuum_truncate parameter. The TRUNCATE parameter of VACUUM , if specified, overrides the value of this option.

  • toast_tuple_targetTables and materialized views11 – 20

    The toast_tuple_target specifies the minimum tuple length required before we try to compress and/or move long column values into TOAST tables, and is also the target length we try to reduce the length below once toasting begins. This affects columns marked as External (for move), Main (for compression), or Extended (for both) and applies only to new tuples. There is no effect on existing rows. By default this parameter is set to allow at least 4 tuples per block, which with the default block size will be 2040 bytes. Valid values are between 128 bytes and the (block size - header), by default 8160 bytes. Changing this value may not be useful for very short or very long rows. Note that the default setting is often close to optimal, and it is possible that setting this parameter could have negative effects in some cases. This parameter cannot be set for TOAST tables.

  • user_catalog_tableTables and materialized views10 – 20

    Declare the table as an additional catalog table for purposes of logical replication. See Section 47.6.2 for details. This parameter cannot be set for TOAST tables.

  • vacuum_index_cleanupTables and materialized views12 – 20

    Forces or disables index cleanup when VACUUM is run on this table. The default value is AUTO . With OFF , index cleanup is disabled, with ON it is enabled, and with AUTO a decision is made dynamically, each time VACUUM runs. The dynamic behavior allows VACUUM to avoid needlessly scanning indexes to remove very few dead tuples. Forcibly disabling all index cleanup can speed up VACUUM very significantly, but may also lead to severely bloated indexes if table modifications are frequent. The INDEX_CLEANUP parameter of VACUUM , if specified, overrides the value of this option.

  • vacuum_max_eager_freeze_failure_rateTables and materialized views18 – 20

    Per-table value for vacuum_max_eager_freeze_failure_rate parameter.

    1011121314151617181920
  • vacuum_truncateTables and materialized views12 – 20

    Per-table value for vacuum_truncate parameter. The TRUNCATE parameter of VACUUM , if specified, overrides the value of this option.