Le décodage logique peut être utilisé pour construire des solutions de
réplication synchrone avec
la même interface utilisateur que la réplication synchrone pour la réplication en flux. Pour ce
faire, l'interface de la réplication en flux(voir Section 48.3) doit être utilisée pour envoyer les
données. Les clients doivent envoyer les messages Standby status
update (F)
(voir Section 52.4), tout
comme le font les clients de la réplication en flux.
Un réplica synchrone recevant des changements via le décodage logique
fonctionnera dans le cadre d'une seule base. Comme, a contrario,
synchronous_standby_names
concerne actuellement
tout le serveur, cela signifie que cette technique ne fonctionnera pas
si plus d'une base de données est activement utilisé.
Dans une configuration de réplication synchrone, un deadlock peut survenir si la transaction a verrouillé des tables du catalogue utilisateur de façon exclusive. Voir Section 48.6.2 pour des informations sur les tables du catalogue utilisateur. Ceci est dû au fait que le décodage logique des transactions peut verrouiller des tables du catalogue pour y accéder. Pour éviter ceci, les utilisateurs doivent éviter de prendre un verrou exclusif sur les tables du catalogue utilisateur. Ceci peut arriver dans les cas suivants :
Exécuter un LOCK
explicite sur
pg_class
dans une transaction.
Exécuter CLUSTER
sur
pg_class
dans une transaction.
Exécuter TRUNCATE
sur une table du catalogue
utilisateur dans une transaction.
Notez que ces commandes qui peuvent causer des deadlocks concernent non seulement les tables du catalogue utilisateur explicitement indiquées mais aussi aux autres tables du catalogue utilisateur.