http://www.postgresql.org/docs/9.2/static/transaction-iso.html
Le mode de lecture répétable offre une garantie rigoureuse que chaque transaction voit une vue complètement stable de la base de données. Cependant, cette vue ne sera pas nécessairement toujours cohérente avec une exécution en série (une à la fois) de transactions simultanées du même niveau. Par exemple, même une transaction en lecture seule à ce niveau peut voir un enregistrement de contrôle mis à jour pour montrer qu'un lot a été terminé mais ne pas voir l'un des enregistrements de détail qui fait logiquement partie du lot car il a lu une révision antérieure de l'enregistrement de contrôle . Les tentatives d'application des règles métier par des transactions s'exécutant à ce niveau d'isolement ne sont pas susceptibles de fonctionner correctement sans une utilisation prudente des verrous explicites pour bloquer les transactions en conflit.
N'est-ce pas une lecture fantôme, ce qui n'est pas possible en mode de lecture répétable?
La documentation indique qu'une requête dans une transaction de lecture répétée voit un instantané au début de la transaction, alors comment une requête peut-elle lire des données incohérentes?
la source
Les lectures fantômes (assurez-vous de ne pas les confondre avec les lectures non répétables) sont possibles dans le niveau d'isolement "Lecture répétable" ... en principe. Mais le comportement de facto de Postgresql lorsque vous sélectionnez «Lecture répétable» est plus fort que la norme (presque un isolement «sérialisable»), de sorte que, en fait, vous n'aurez pas de lectures fantômes. Documents :
Maintenant, qu'en est-il de cette mise en garde "cette vue ne sera pas nécessairement toujours compatible avec une exécution en série (une à la fois) de transactions simultanées du même niveau"? Je pense (je ne suis pas sûr) que cela signifie que cela signifie que l'instantané "de l'extérieur" (fixé au début de la transaction) peut éventuellement inclure des lignes d'autres transactions mais ne parvient pas à inclure d'autres lignes de cette même transaction.
la source