Type: | integer |
Défaut: | 64 |
Min: | 10 |
Max: | 2147483647 |
Contexte: | postmaster |
Redémarrer: | true |
La table des verrous partagés trace les verrous sur max_locks_per_transaction
* (max_connections + max_prepared_transactions) objets (c'est-à-dire des tables) ; de ce fait, au maximum ce nombre d'objets distincts peuvent être verrouillés simultanément. Ce paramètre contrôle le nombre moyen de verrous d'objets alloués pour chaque transaction ; des transactions individuelles peuvent verrouiller plus d'objets tant que l'ensemble des verrous de toutes les transactions tient dans la table des verrous. Il ne s'agit pas du nombre de lignes qui peuvent être verrouillées ; cette valeur n'a pas de limite. La valeur par défaut, 64, s'est toujours avérée suffisante par le passé, mais il est possible de l'augmenter si des clients accèdent à de nombreuses tables différentes au sein d'une unique transaction, par exemple une requête sur une table parent ayant de nombreux enfants. Ce paramètre ne peut être initialisé qu'au lancement du serveur.
Lors de l'exécution d'un serveur en attente, vous devez configurer ce paramètre à la même valeur ou à une valeur plus importante que sur le serveur maître. Sinon, des requêtes pourraient ne pas être autorisées sur le serveur en attente.
Recommandations [EN]
Sur StackOverflow
Sur pgsql-hackers
- Re: allow changing autovacuum_max_workers without restarting
- Re: Fix the description of GUC "max_locks_per_transaction" and "max_pred_locks_per_transaction" in guc_table.c
- Re: scalability bottlenecks with (many) partitions (and more)
- Re: partitioning and identity column
- Re: pg_upgrade failing for 200+ million Large Objects