Lorsque le processus Autovacuum est sous vide une grande table, les interrogations comme la chute et le tronquent seront bloquées jusqu'à ce que l'aspirateur soit terminé? Dans la documentation, il dit
En outre, la forme standard de vide peut fonctionner en parallèle avec des opérations de la base de données de production. (Commandes telles que Select, Insérer, Mettre à jour et Supprimer continuera à fonctionner normalement, bien que vous ne puissiez pas modifier la définition d'une table avec des commandes telles que ALTER TABLE pendant l'aspirateur.)
Mais je me demande si une goutte ou tronquée est incluse.
Autovacuum et aspirateur se comportent différemment. Ils obtiennent tous deux le même verrou, mais l'autovacuum sera annulé si elle est détectée de bloquer autre chose. La goutte ou le tronquage sera bloqué, mais dans le cas d'un autovacuum, il ne fera qu'au plus 1 seconde (ou tout ce que "Deadlock_Timeout" est réglé).
Une exception à ceci est un autoovacuum "pour prévenir enveloppant". Celles-ci ne seront pas annulées, ce qui peut être un problème majeur. Surtout dans le cas de la goutte ou de la tronquage, puisque, car cela permettrait à celles-ci se produire éviterait la nécessité d'un aspirateur enveloppant en premier lieu.
(Pour les amateurs de détails techniques: le mode de verrouillage est défini dans la ligne 1590 de SRC/Backend/Commandes/Vacuum.c, cela ne dépend pas de l'auto ou du manuel (sur la tête 12Dev). L'annulation est effectuée en SRC/Backend/Stockage/LMGR/PROCC.C Basé sur un drapeau défini dans SRC/Backend/Stockage/Lmgr/Deadlock.c. Il est fait là-bas, car le code qui vérifie les blocages est un endroit pratique pour vérifier d'être bloqué par Autovac.)