PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Isolation des transactions PostgreSQL READ UNCOMMITTED

PostgreSQL ne prend pas en charge les lectures modifiées (READ UNCOMMITTED ). Comme @a_horse_with_no_name l'a souligné, le manuel dit :

Cela correspond à la règle de la norme selon laquelle la base de données doit traiter les niveaux d'isolement non pris en charge comme le niveau le plus fort pris en charge.

Il n'existe aucun moyen pris en charge pour lire des tuples non validés à partir d'une transaction en cours dans PostgreSQL. S'il y en avait, vous seriez en mesure d'obtenir des choses comme des valeurs en double pour les clés primaires et le chaos général, donc ce ne serait pas très utile de toute façon.

Il y a quelques façons dont les transactions en cours peuvent communiquer et s'influencer :

  • Via une application client partagée (bien sûr)
  • SEQUENCE (et SERIAL ) les mises à jour se produisent immédiatement, pas au moment de la validation
  • verrouillage consultatif
  • Verrouillage normal des lignes et des tables, mais dans les règles de READ COMMITTED visibilité
  • UNIQUE et EXCLUSION contraintes

Il est possible de voir les données de tuple non validées en utilisant des fonctionnalités de débogage réservées aux superutilisateurs comme inspection de page , mais uniquement si vous comprenez vraiment les entrailles du magasin de données. Il convient uniquement à la récupération de données et au débogage. Vous verrez plusieurs versions de données dans un mur de sortie hexadécimale.