Le mot magique n'est pas transaction. Le mot magique est versioning des lignes : c'est la grosse nouveauté apporté par ce moteur. PostgreSQL implémente un modèle MVCC (multi version concurrency control) depuis très longtemps (ca a été ajouté entre la 6 et la 7, ca a toujours été le cas dans la branche 7 en tout cas donc déjà en 2000).
Le principe est d'avoir plusieurs versions de la même ligne afin de permettre à des transactions différentes d'avoir une vue différente de la base.
Les implémentations peuvent être assez différentes suivant les bases : Oracle utilise un undo log pour gérer cela (d'après mes lectures, jamais utilisé Oracle), PostgreSQL conserve toutes les versions jusqu'à un VACUUM qui supprime les versions plus vieilles que la plus ancienne des transactions.
[^] # Re: les transactions ...
Posté par Guillaume Smet (site web personnel) . En réponse au journal Arrivée de Falcon dans MySQL. Évalué à 4.
Le principe est d'avoir plusieurs versions de la même ligne afin de permettre à des transactions différentes d'avoir une vue différente de la base.
Les implémentations peuvent être assez différentes suivant les bases : Oracle utilise un undo log pour gérer cela (d'après mes lectures, jamais utilisé Oracle), PostgreSQL conserve toutes les versions jusqu'à un VACUUM qui supprime les versions plus vieilles que la plus ancienne des transactions.
Pour information :
http://www.pervasive-postgres.com/instantkb13/article.aspx?i(...)
http://en.wikipedia.org/wiki/Multiversion_concurrency_contro(...)
C'était un _gros_ manque de MySQL et ça l'est toujours en attendant d'avoir une version stable l'implémentant.