Maison  >  Article  >  base de données  >  Qu'est-ce que le traitement des transactions dans MySQL

Qu'est-ce que le traitement des transactions dans MySQL

青灯夜游
青灯夜游original
2022-11-11 17:32:102473parcourir

Dans MySQL, le traitement des transactions est un mécanisme utilisé pour gérer les opérations MySQL qui doivent être exécutées par lots pour garantir que la base de données ne contient pas de résultats d'opérations incomplets. Le traitement des transactions peut être utilisé pour maintenir l'intégrité de la base de données et garantir que les lots MySQL ; les opérations ne s’arrêtent pas à mi-chemin, elles sont soit entièrement exécutées, soit pas exécutées du tout.

Qu'est-ce que le traitement des transactions dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Traitement des transactions

Le traitement des transactions peut être utilisé pour maintenir l'intégrité de la base de données. Il garantit que les lots d'opérations MySQL sont entièrement exécutés ou ne sont pas exécutés du tout.

Par exemple, dans le système de gestion du personnel, supprimer une personne nécessite de supprimer non seulement les informations de base de la personne, mais également les informations liées à la personne, comme la boîte aux lettres, les articles, etc. les relevés constituent une transaction !

Le traitement des transactions est un mécanisme utilisé pour gérer les opérations MySQL qui doivent être effectuées par lots pour garantir que la base de données ne contient pas de résultats d'opérations incomplets. Grâce au traitement des transactions, vous pouvez garantir qu'un ensemble d'opérations ne sera pas arrêté à mi-chemin, elles seront soit exécutées dans leur ensemble, soit pas exécutées du tout (sauf instruction explicite) . Si aucune erreur ne se produit, l'ensemble des instructions est validé (écrit) dans la table de base de données. Si une erreur se produit, annulez (annulez) pour restaurer la base de données dans un état connu et sûr.

De manière générale, les transactions doivent remplir 4 conditions (ACID) : Atomicité (Atomicité, ou indivisibilité), Cohérence (Consistance), isolement ( Isolation, également connue sous le nom d'indépendance), persistance (Durabilité).

  • Atomicité : Toutes les opérations d'une transaction seront soit terminées, soit non terminées, et ne se termineront par aucun lien intermédiaire. Si une erreur se produit lors de l'exécution de la transaction, elle sera restaurée à l'état avant le début de la transaction, comme si la transaction n'avait jamais été exécutée.

  • Cohérence : L'intégrité de la base de données n'est pas compromise avant le début de la transaction et après la fin de la transaction. Cela signifie que les données écrites doivent respecter pleinement toutes les règles prédéfinies, y compris l'exactitude et la concaténation des données, et que la base de données ultérieure peut spontanément accomplir le travail prédéterminé.

  • Isolement : La base de données permet à plusieurs transactions simultanées de lire, d'écrire et de modifier ses données en même temps. L'isolement peut empêcher l'incohérence des données due à une exécution croisée lorsque plusieurs transactions sont exécutées simultanément. L'isolement des transactions est divisé en différents niveaux, notamment lecture non validée, lecture validée, lecture répétable et sérialisable.

  • Persistance : Une fois la transaction terminée, la modification des données est permanente et ne sera pas perdue même en cas de panne du système.

1.1 Mots clés

Lors de l'utilisation des transactions et du traitement des transactions, plusieurs mots clés apparaissent à plusieurs reprises. Voici quelques termes que vous devez connaître sur le traitement des transactions :

  • Transaction : fait référence à un ensemble d'instructions SQL
  • Rollback (rollback) : fait référence au processus d'annulation d'une instruction SQL spécifiée ;
  • Commit : fait référence à l'écriture des résultats d'une instruction SQL non stockée dans la table de base de données ;
  • savepoint (savepoint) : fait référence à l'espace réservé temporaire (espace réservé) défini dans le traitement de la transaction, que vous pouvez publier une restauration (par opposition à annuler la totalité de la transaction).

1.2 Déclaration de contrôle des transactions

La clé de la gestion du traitement des transactions est de diviser les groupes d'instructions SQL en blocs logiques , et de spécifier clairement quand les données doivent être annulées et quand elles ne doivent pas être annulées. .

1.2.1 START TRANSACTION Démarrer la transaction

              MySQL utilise l'instruction suivante pour identifier

le début d'une transaction  :  

START  TRANSACTION

1.2.2 COMMIT

Les instructions générales MySQL sont exécutées et écrites directement sur les tables de la base de données. C'est ce qu'on appelle la commission implicite, c'est-à-dire que l'opération de validation (écriture ou sauvegarde) est effectuée automatiquement. Oui, mais dans le bloc de traitement des transactions, la soumission ne se déroulera pas implicitement. Pour effectuer une validation explicite, utilisez l'instruction
COMMIT, COMMIT validera la transaction et rendra permanentes toutes les modifications qui ont été apportées à la base de données ressemble à ceci :

START TRANSACTION  
DELETE FROM orderitems WHERE order_num = 20010;
DELETE FROM orders WHERE order_num = 20010;
COMMIT;
Dans cet exemple, à partir du système ; Supprimer complètement la commande en 20010. Comme cela implique la mise à jour de deux tables de base de données, commandes et commandesItems, un bloc de transaction est utilisé pour garantir que la commande n'est pas partiellement supprimée.

L'instruction COMMIT finale n'écrit les modifications que si aucune erreur ne se produit. Si le premier DELETE fonctionne mais que le second échoue, le DELETE n'est pas validé (en fait, il est automatiquement révoqué).

1.2.3 ROLLBACK

La commande

ROLLBACK de MySQL est utilisée pour annuler (annuler) les instructions MySQL , comme suit :

SELECT * FROM orderitems;
START TRANSACTION        -- 事务开始
DELETE FROM orderitems;
SELECT * FROM orderitems;
ROLLBACK;
SELECT * FROM orderitems;
L'exemple ci-dessus commence par afficher le contenu de la table ordertotals. Exécutez d’abord un SELECT pour montrer que la table n’est pas vide. Ensuite, démarrez une

transaction

,
utilisez une instruction DELETE pour supprimer toutes les lignes des ordertotals. Une autre instruction SELECT vérifie que ordertotals est bien vide. À ce stade, utilisez une instruction ROLLBACK pour annuler toutes les instructions après START TRANSACTION, et la dernière instruction SELECT montre que la table n'est pas vide.       Évidemment, ROLLBACK ne peut être utilisé que dans le cadre d'une transaction (après avoir exécuté une commande START TRANSACTION)
. Le

Le traitement des transactions
est utilisé pour gérer les instructions INSERT, UPDATE et DELETE. Vous ne pouvez pas annuler une instruction SELECT. (Cela n'a pas non plus de sens.) Vous ne pouvez pas annuler une opération CREATE ou DROP. Ces deux instructions peuvent être utilisées dans un bloc de transactions, mais elles ne seront pas annulées si vous effectuez une restauration.

1.2.4 Point de rétention

De simples instructions ROLLBACK et COMMIT peuvent écrire ou annuler l'intégralité de la transaction

. Toutefois, cela n'est possible que pour des transactions simples ; des transactions plus complexes peuvent nécessiter une validation ou une annulation partielle. #                                                                          Afin de prendre en charge l'annulation d'une partie du traitement des transactions, des espaces réservés doivent être placés aux emplacements appropriés dans le bloc de traitement des transactions. De cette façon, si vous devez revenir en arrière, vous pouvez revenir à un espace réservé. Ces espaces réservés sont appelés points de rétention. Afin de créer un espace réservé, vous pouvez utiliser l'instruction

Savepoint

suivante  :

SAVEPOINT delete1;
E Chaque point de rétention prend le seul nom pour l'identifier afin que lorsque vous revenez, mysql sache où revenir.退 L'opération suivante peut être renvoyée au point réservé :
ROLLBACK TO delete1;

1.2.5 modifier le comportement de soumission par défaut

, comme mentionné, le comportement par défaut de MySQL est de soumettre automatiquement toutes les modifications. En d’autres termes, chaque fois que vous exécutez une instruction MySQL, l’instruction est réellement exécutée sur la table et les modifications prennent effet immédiatement. Pour demander à MySQL de ne pas valider automatiquement les modifications, vous devez utiliser l'instruction suivante :

SET autocommit = 0;

        L'indicateur autocommit détermine s'il faut automatiquement valider les modifications , qu'il existe ou non une instruction COMMIT. Définir autocommit sur 0 (false) indique à MySQL de ne pas valider automatiquement les modifications (jusqu'à ce que autocommit soit défini sur true).

Drapeaux pour les connexions Les indicateurs de validation automatique spécialisés sont par connexion plutôt que spécifiques au serveur.

1.3 Méthode de traitement des transactions

Il existe deux méthodes principales de traitement des transactions MYSQL : Utilisez BEGIN, ROLLBACK, COMMIT pour implémenter

1) BEGINDémarrer une transaction

    2)
  • ROLLBACK
  • Annulation de la transaction

3) COMMITConfirmation de la transaction

Exemple :

START TRANSACTION; -- 开始事务
INSERT INTO runoob_transaction_test VALUE(5);
INSERT INTO runoob_transaction_test VALUE(6);
COMMIT; -- 提交事务

select * from runoob_transaction_test;

  • Utilisez SET directement pour modifier le mode de validation automatique de MySQL :

SET AUTOCOMMIT=0Désactiver la soumission automatique

SET AUTOCOMMIT=1Activer la soumission automatique

[Recommandations associées : Tutoriel vidéo mysql

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn