vacuum
) #These parameters control vacuuming behavior. For more information on the purpose and responsibilities of vacuum, see Section 24.1.
Ces paramètres contrôlent le comportement de la fonctionnalité appelée autovacuum. Se référer à la Section 24.1.6 pour plus de détails. Notez que beaucoup de ces paramètres peuvent être surchargés au niveau de chaque table ; voir Paramètres de stockage.
autovacuum
(boolean
) #
Contrôle si le serveur doit démarrer le démon d'autovacuum.
Celui-ci est activé par défaut. track_counts
doit aussi être activé pour que ce
démon soit démarré. Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande;
cependant, le processus d'autovacuum peut être désactivé au niveau
de chaque table en modifiant les paramètres de stockage de la table.
Même si ce paramètre est désactivé, le système lance les processus autovacuum nécessaires pour empêcher le bouclage des identifiants de transaction. Voir Section 24.1.5 pour plus d'informations.
autovacuum_worker_slots
(integer
)
#Specifies the number of backend slots to reserve for autovacuum worker processes. The default is typically 16 slots, but might be less if your kernel settings will not support it (as determined during initdb). This parameter can only be set at server start.
When changing this value, consider also adjusting autovacuum_max_workers.
autovacuum_max_workers
(integer
) #
Indique le nombre maximum de processus autovacuum (autre que le lanceur
d'autovacuum) qui peuvent être exécutés simultanément. La valeur par défaut
est 3
. This parameter can only be set in the
postgresql.conf
file or on the server command line.
Note that a setting for this value which is higher than autovacuum_worker_slots will have no effect, since autovacuum workers are taken from the pool of slots established by that setting.
autovacuum_naptime
(integer
) #
Indique le délai minimum entre les tours d'activité du démon autovacuum sur
une base. À chaque tour, le démon examine une base de données et lance les
commandes VACUUM
et ANALYZE
nécessaires aux tables de cette base. Si cette valeur est indiquée sans
unité, elle est comprise comme un nombre de secondes. Il vaut, par défaut,
une minute (1min
). Ce paramètre ne peut être configuré
que dans le fichier postgresql.conf
ou indiqué sur la
ligne de commande.
autovacuum_vacuum_threshold
(integer
) #
Indique le nombre minimum de lignes mises à jour ou supprimées
nécessaire pour déclencher un VACUUM
sur une table.
La valeur par défaut est de 50 lignes.
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande
mais il est possible de surcharger ce paramètre pour toute table en
modifiant les paramètres de stockage de la table.
autovacuum_vacuum_insert_threshold
(integer
)
#
Indique le nombre de lignes enregistrées avant de déclencher un
VACUUM
sur une table. La valeur par défaut est 1000
lignes. Si -1 est indiqué, autovacuum ne déclenchera pas d'opération
VACUUM
sur une table en se basant sur le nombre
d'insertions. Ce paramètre peut seulement être configuré dans le fichier
postgresql.conf
et sur la ligne de commande du
serveur ; mais la configuration peut être surchargée par des tables
individuelles en modifiant leur paramètres de stockage.
autovacuum_analyze_threshold
(integer
) #
Indique le nombre minimum de lignes insérées, mises à jour ou supprimées
nécessaire pour déclencher un ANALYZE
sur une table. La valeur
par défaut est de 50 lignes.
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande
mais il est possible de surcharger ce paramètre pour toute table en
modifiant les paramètres de stockage de la table.
autovacuum_vacuum_insert_scale_factor
(floating point
)
#
Specifies a fraction of the unfrozen pages in the table to add to
autovacuum_vacuum_insert_threshold
avant de décider de
déclencher un VACUUM
sur une table. La valeur par défaut
est 0,2
(soit 20% des pages non gelées de la table). Ce paramètre peut seulement être configuré
dans le fichier postgresql.conf
et sur la ligne de
commande du serveur ; mais la configuration peut être surchargée par
des tables individuelles en modifiant leur paramètres de stockage.
autovacuum_vacuum_scale_factor
(floating point
) #
Indique la fraction de taille de la table à ajouter à
autovacuum_vacuum_threshold
pour décider du moment
auquel déclencher un VACUUM
. La valeur par défaut
est 0,2
(20 % de la taille de la table).
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande
mais il est possible de surcharger ce paramètre pour toute table en
modifiant les paramètres de stockage de la table.
autovacuum_analyze_scale_factor
(floating point
) #
Indique la fraction de taille de la table à ajouter à
autovacuum_analyze_threshold
pour décider du
moment auquel déclencher une commande ANALYZE
.
La valeur par défaut est 0,1
(10 % de la taille de la table).
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande
mais il est possible de surcharger ce paramètre pour toute table en
modifiant les paramètres de stockage de la table.
autovacuum_vacuum_max_threshold
(integer
)
#
Specifies the maximum number of updated or deleted tuples needed to
trigger a VACUUM
in any one table, i.e., a limit on
the value calculated with
autovacuum_vacuum_threshold
and
autovacuum_vacuum_scale_factor
. The default is
100,000,000 tuples. If -1 is specified, autovacuum will not enforce a
maximum number of updated or deleted tuples that will trigger a
VACUUM
operation. This parameter can only be set
in the postgresql.conf
file or on the server
command line; but the setting can be overridden for individual tables
by changing storage parameters.
autovacuum_freeze_max_age
(integer
) #
Indique l'âge maximum (en transactions) que le champ
pg_class
.relfrozenxid
d'une table peut atteindre avant qu'une opération
VACUUM
ne soit forcée pour empêcher la réinitialisation
de l'ID de transaction sur cette table. Le système lance les
processus autovacuum pour éviter ce bouclage même si l'autovacuum est désactivé.
L'opération VACUUM supprime aussi les anciens fichiers du
sous-répertoire pg_xact
, ce qui explique pourquoi
la valeur par défaut est relativement basse (200 millions de transactions).
Ce paramètre
n'est lu qu'au démarrage du serveur, mais il peut être diminué pour
toute table en modifiant les paramètres de stockage de la table. Pour plus
d'informations, voir Section 24.1.5.
autovacuum_multixact_freeze_max_age
(integer
) #
Indique l'âge maximum (en multixacts) que le champ
pg_class
.relminmxid
d'une table peut atteindre avant qu'une opération
VACUUM
ne soit forcé pour empêcher une réutilisation
des identifiants multixact dans la table. Notez que le système lancera
les processus autovacuum pour empêcher la réutilisation même si
l'autovacuum est normalement désactivé.
Un VACUUM des multixacts s'occupe aussi de la suppression des anciens
fichiers à partir des sous-répertoires pg_multixact/members
et pg_multixact/offsets
, ce qui explique pourquoi
la valeur par défaut est relativement basse (400 million de multixacts).
Ce paramètre est seulement configurable au démarrage du serveur mais sa
valeur peut être réduite pour des tables individuelles en modifiant les
paramètres de stockage de la table. Pour plus d'informations, voir Section 24.1.5.1.
autovacuum_vacuum_cost_delay
(integer
) #
Indique la valeur du coût de délai utilisée dans les opérations de
VACUUM
. Si -1 est indiqué,
la valeur habituelle de vacuum_cost_delay est
utilisée. Si cette valeur est spécifiée sans unité, elle est comprise
comme un nombre de millisecondes. La valeur par défaut est 2 millisecondes.
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande
mais il est possible de le surcharger pour toute table en
modifiant les paramètres de stockage de la table.
autovacuum_vacuum_cost_limit
(integer
) #
Indique la valeur de coût limite utilisée dans les opérations de
VACUUM
automatiques. Si -1
est
indiqué (valeur par défaut), la valeur courante de
vacuum_cost_limit est utilisée. La
valeur est distribuée proportionnellement entre les processus
autovacuum en cours d'exécution, s'il y en a plus d'un, de sorte que la
somme des limites de chaque processus ne dépasse jamais la valeur de
cette variable.
Ce paramètre ne peut être configuré que dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande
mais il est possible de le surcharger pour toute table en modifiant les
paramètres de stockage.
During the execution of VACUUM
and ANALYZE
commands, the system maintains an
internal counter that keeps track of the estimated cost of the
various I/O operations that are performed. When the accumulated
cost reaches a limit (specified by
vacuum_cost_limit
), the process performing
the operation will sleep for a short period of time, as specified by
vacuum_cost_delay
. Then it will reset the
counter and continue execution.
The intent of this feature is to allow administrators to reduce
the I/O impact of these commands on concurrent database
activity. There are many situations where it is not
important that maintenance commands like
VACUUM
and ANALYZE
finish
quickly; however, it is usually very important that these
commands do not significantly interfere with the ability of the
system to perform other database operations. Cost-based vacuum
delay provides a way for administrators to achieve this.
This feature is disabled by default for manually issued
VACUUM
commands. To enable it, set the
vacuum_cost_delay
variable to a nonzero
value.
vacuum_cost_delay
(floating point
)
#
The amount of time that the process will sleep when the cost
limit has been exceeded. If this value is specified without
units, it is taken as milliseconds. The default value is
0
, which disables the cost-based vacuum delay
feature. Positive values enable cost-based vacuuming.
When using cost-based vacuuming, appropriate values for
vacuum_cost_delay
are usually quite small, perhaps
less than 1 millisecond. While vacuum_cost_delay
can be set to fractional-millisecond values, such delays may not be
measured accurately on older platforms. On such platforms,
increasing VACUUM
's throttled resource consumption
above what you get at 1ms will require changing the other vacuum cost
parameters. You should, nonetheless,
keep vacuum_cost_delay
as small as your platform
will consistently measure; large delays are not helpful.
vacuum_cost_page_hit
(integer
)
#
The estimated cost for vacuuming a buffer found in the shared
buffer cache. It represents the cost to lock the buffer pool,
lookup the shared hash table and scan the content of the page.
The default value is 1
.
vacuum_cost_page_miss
(integer
)
#
The estimated cost for vacuuming a buffer that has to be read from
disk. This represents the effort to lock the buffer pool,
lookup the shared hash table, read the desired block in from
the disk and scan its content. The default value is
2
.
vacuum_cost_page_dirty
(integer
)
#
The estimated cost charged when vacuum modifies a block that was
previously clean. It represents the extra I/O required to
flush the dirty block out to disk again. The default value is
20
.
vacuum_cost_limit
(integer
)
#
This is the accumulated cost that will cause the vacuuming
process to sleep for vacuum_cost_delay
. The
default is 200
.
There are certain operations that hold critical locks and should
therefore complete as quickly as possible. Cost-based vacuum
delays do not occur during such operations. Therefore it is
possible that the cost accumulates far higher than the specified
limit. To avoid uselessly long delays in such cases, the actual
delay is calculated as vacuum_cost_delay
*
accumulated_balance
/
vacuum_cost_limit
with a maximum of
vacuum_cost_delay
* 4.
vacuum_truncate
(boolean
)
#
Enables or disables vacuum to try to truncate off any empty pages at
the end of the table. The default value is true
.
If true
, VACUUM
and autovacuum
do the truncation and the disk space for the truncated pages is
returned to the operating system. Note that the truncation requires
an ACCESS EXCLUSIVE
lock on the table. The
TRUNCATE
parameter of
VACUUM
, if
specified, overrides the value of this parameter. The setting can
also be overridden for individual tables by changing table storage
parameters.
To maintain correctness even after transaction IDs wrap around,
PostgreSQL marks rows that are sufficiently
old as frozen. These rows are visible to everyone;
other transactions do not need to examine their inserting XID to
determine visibility. VACUUM
is responsible for
marking rows as frozen. The following settings control
VACUUM
's freezing behavior and should be tuned based
on the XID consumption rate of the system and data access patterns of the
dominant workloads. See Section 24.1.5 for more
information on transaction ID wraparound and tuning these parameters.
vacuum_freeze_table_age
(integer
) #
VACUUM
effectuera un parcours agressif de la table si
le champ pg_class
.relfrozenxid
de la table a atteint l'âge spécifié par ce paramètre. Un parcours agressif diffère
d'un VACUUM
standard dans le sens où il visite chaque bloc qui
pourrait contenir des XID ou MXID non gelés, pas seulement ceux qui pourraient
contenir des lignes mortes. La valeur par
défaut est 150 millions de transactions. Même si les utilisateurs peuvent
positionner cette valeur à n'importe quelle valeur comprise entre zéro et
2 milliards, VACUUM
limitera silencieusement la valeur
effective à 95% de autovacuum_freeze_max_age, afin
qu'un vacuum périodique manuel ait une chance de s'exécuter avant un
autovacuum anti-bouclage ne soit lancé pour la table. Pour plus d'informations
voir Section 24.1.5.
vacuum_freeze_min_age
(integer
)
#
Specifies the cutoff age (in transactions) that
VACUUM
should use to decide whether to
trigger freezing of pages that have an older XID.
The default is 50 million transactions. Although
users can set this value anywhere from zero to one billion,
VACUUM
will silently limit the effective value to half
the value of autovacuum_freeze_max_age, so
that there is not an unreasonably short time between forced
autovacuums. For more information see Section 24.1.5.
vacuum_failsafe_age
(integer
)
#
Specifies the maximum age (in transactions) that a table's
pg_class
.relfrozenxid
field can attain before VACUUM
takes
extraordinary measures to avoid system-wide transaction ID
wraparound failure. This is VACUUM
's
strategy of last resort. The failsafe typically triggers
when an autovacuum to prevent transaction ID wraparound has
already been running for some time, though it's possible for
the failsafe to trigger during any VACUUM
.
When the failsafe is triggered, any cost-based delay that is
in effect will no longer be applied, further non-essential
maintenance tasks (such as index vacuuming) are bypassed, and any
Buffer Access Strategy
in use will be disabled resulting in VACUUM
being
free to make use of all of
shared buffers.
The default is 1.6 billion transactions. Although users can
set this value anywhere from zero to 2.1 billion,
VACUUM
will silently adjust the effective
value to no less than 105% of autovacuum_freeze_max_age.
vacuum_multixact_freeze_table_age
(integer
)
#
VACUUM
performs an aggressive scan if the table's
pg_class
.relminmxid
field has reached
the age specified by this setting. An aggressive scan differs from
a regular VACUUM
in that it visits every page that might
contain unfrozen XIDs or MXIDs, not just those that might contain dead
tuples. The default is 150 million multixacts.
Although users can set this value anywhere from zero to two billion,
VACUUM
will silently limit the effective value to 95% of
autovacuum_multixact_freeze_max_age, so that a
periodic manual VACUUM
has a chance to run before an
anti-wraparound is launched for the table.
For more information see Section 24.1.5.1.
vacuum_multixact_freeze_min_age
(integer
)
#
Specifies the cutoff age (in multixacts) that VACUUM
should use to decide whether to trigger freezing of pages with
an older multixact ID. The default is 5 million multixacts.
Although users can set this value anywhere from zero to one billion,
VACUUM
will silently limit the effective value to half
the value of autovacuum_multixact_freeze_max_age,
so that there is not an unreasonably short time between forced
autovacuums.
For more information see Section 24.1.5.1.
vacuum_multixact_failsafe_age
(integer
)
#
Specifies the maximum age (in multixacts) that a table's
pg_class
.relminmxid
field can attain before VACUUM
takes
extraordinary measures to avoid system-wide multixact ID
wraparound failure. This is VACUUM
's
strategy of last resort. The failsafe typically triggers when
an autovacuum to prevent transaction ID wraparound has already
been running for some time, though it's possible for the
failsafe to trigger during any VACUUM
.
When the failsafe is triggered, any cost-based delay that is in effect will no longer be applied, and further non-essential maintenance tasks (such as index vacuuming) are bypassed.
The default is 1.6 billion multixacts. Although users can set
this value anywhere from zero to 2.1 billion,
VACUUM
will silently adjust the effective
value to no less than 105% of autovacuum_multixact_freeze_max_age.
vacuum_max_eager_freeze_failure_rate
(floating point
)
#
Specifies the maximum number of pages (as a fraction of total pages in
the relation) that VACUUM
may scan and
fail to set all-frozen in the visibility map
before disabling eager scanning. A value of 0
disables eager scanning altogether. The default is
0.03
(3%).
Note that when eager scanning is enabled, only freeze failures count against the cap, not successful freezing. Successful page freezes are capped internally at 20% of the all-visible but not all-frozen pages in the relation. Capping successful page freezes helps amortize the overhead across multiple normal vacuums and limits the potential downside of wasted eager freezes of pages that are modified again before the next aggressive vacuum.
This parameter can only be set in the
postgresql.conf
file or on the server command
line; but the setting can be overridden for individual tables by
changing the
corresponding table storage parameter.
For more information on tuning vacuum's freezing behavior,
see Section 24.1.5.