Maison > Article > base de données > Qu'est-ce que le traitement des transactions dans MySQL
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.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
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 :
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. .
le début d'une transaction :
START TRANSACTION
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.
1.2.3 ROLLBACK
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
,
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
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
. 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
Savepointsuivante :
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;
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
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;
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!