Quelles sont les différences entre échec de transaction et abandon de transaction? Et quelles sont les causes de l'échec de la transaction et de la transaction?

Quelles sont les différences entre échec de transaction et abandon de transaction? Et quelles sont les causes de l'échec de la transaction et de la transaction?

Greg Kemnitz, stagiaires Postgres, internes à la base de données embarqués, niveau utilisateur MySQL

Si la question est dans le contexte d'un moteur de base de données avec des transactions ACID, une transaction qui "abandonne" pour une raison quelconque sera annulée et le monde de la base de données sera comme si la transaction n'avait jamais eu lieu.

Les moteurs de base de données sont généralement codés avec soin, de sorte que toutes les transactions qui ne sont pas encore COMMIT - ou les transactions à une seule instruction avec AUTO_COMMIT qui ne sont pas encore terminées - seront annulées si le moteur de base de données échoue, est tué et la machine " s exécution de plantage, etc. Cela se fait généralement dans le cadre du processus de récupération après incident du moteur de base de données (il n'y a pas de bonne Wikipedia sur la récupération après incident, donc j'ai utilisé la description de récupération après incident d'InnoDB).

Un moteur de base de données peut tomber en panne de nombreuses manières et la machine sur laquelle il se trouve peut également tomber en panne, perdre de l’énergie, etc., mais si le moteur de base de données est correctement codé, le monde des données sera modifié. disponible quand il revient.

Plus d'informations sur les transactions de base de données: transaction de base de données.

Étant donné que cela est posté dans "finance", je dois souligner qu'une application "transaction" peut ne pas être nécessairement égale à une transaction de base de données. La description que j'ai donnée ci-dessus ne concerne que les transactions avec le moteur de base de données.

Vishal Raj

Ingénieur en informatique diplômé
Résolu le 8 novembre 2017 · Auteur a 535 réponses et 424.4k réponses vues

Comme vous n'avez pas mentionné de contexte spécifique, la réponse serait donc très générique.

Echec de la transaction = Une erreur est survenue lors de l'exécution des instructions de la transaction et a donc échoué.

Transaction abort = Une demande explicite d'arrêter la transaction en cours. Cela pourrait très bien aussi être dû à une défaillance de transaction ou à une demande de l'utilisateur.

Un exemple simple serait, disons que vous ouvrez le navigateur et demandez une URL. Si la page n'a pas pu être chargée correctement, il s'agit d'une erreur de transaction. Mais si la page prend du temps à charger et que vous appuyez sur la touche "Echap", la transaction est interrompue.

Espérons que cela vous a aidé à comprendre la différence.

Finnbogi Ragnar Ragnarsson
Résolu le 1 novembre 2017 · L'auteur a 186 réponses et 155.8k réponses vues

La question est trop vague, mais en général, cela signifierait qu’une erreur s’est produite dans le premier cas ou l’a empêchée de se produire, mais la dernière transaction a été annulée.

Ces deux ne seraient pas mutuellement exclusifs.

Systèmes de bases de données, ordinateurs, programmation informatique