Maison base de données tutoriel mysql La relation entre les verrous MySQL, les niveaux d'isolation des transactions et les applications

La relation entre les verrous MySQL, les niveaux d'isolation des transactions et les applications

Dec 21, 2023 am 08:27 AM
应用 mysql锁 事务隔离级别

MySQL 锁的事务隔离级别与应用

Niveau d'isolement des transactions de verrouillage MySQL et application
Dans la base de données, le niveau d'isolement des transactions est un concept très important, qui détermine le degré d'isolement entre les transactions simultanées. MySQL propose quatre niveaux d'isolation des transactions : READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ et SERIALIZABLE. Différents niveaux d'isolation des transactions ont différentes stratégies de verrouillage pour la lecture et l'écriture des données. Il est donc crucial de sélectionner et d'utiliser correctement le niveau d'isolation des transactions approprié dans votre application.

  1. LIRE UNCOMMITTED : à ce niveau, les transactions peuvent lire les données non validées d'autres transactions. Cela signifie qu'une lecture sale peut se produire, c'est-à-dire que des données non vérifiées sont lues. Ce niveau n'est généralement pas recommandé sauf si des circonstances particulières nécessitent l'obtention de données en temps très réel.
  2. READ COMMITTED : À ce niveau, les transactions ne peuvent lire que les données soumises. Cela évite les problèmes de lecture incorrecte, mais peut entraîner des problèmes de lecture non reproductibles. La lecture non répétable fait référence à la lecture des mêmes données deux fois dans la même transaction, mais les résultats sont incohérents. En effet, d'autres transactions peuvent avoir mis à jour les données lors de l'exécution de la transaction.
  3. LECTURE RÉPÉTABLE : à ce niveau, une transaction peut lire les mêmes données plusieurs fois avec des résultats cohérents. Ceci est réalisé en verrouillant les données pendant le processus de lecture. Au niveau REPEATABLE READ, l'opération de lecture partagera le verrou sur les lignes de données qui remplissent les conditions, de sorte que les autres transactions pourront uniquement lire les données mais ne pourront pas les modifier. Toutefois, des problèmes de lecture fantôme peuvent toujours survenir. La lecture fantôme fait référence à la lecture de données dans une plage deux fois au cours de la même transaction, mais les résultats sont incohérents. En effet, lors de l'exécution de la transaction, d'autres transactions peuvent avoir inséré ou supprimé des données qui remplissent les conditions.
  4. SERIALIZABLE : A ce niveau, les transactions sont exécutées en série. Cela signifie qu'une seule transaction peut modifier les données au même moment et que d'autres transactions attendent que le verrou soit libéré. Ce niveau peut éviter complètement les problèmes de lectures sales, de lectures non répétables et de lectures fantômes, mais il a également un impact considérable sur les performances de concurrence, car vous devez attendre que d'autres transactions libèrent le verrou.

Ce qui suit utilise des exemples de code spécifiques pour démontrer les stratégies de verrouillage sous différents niveaux d'isolement des transactions :

Créez d'abord une table de test :

CREATE TABLE test_table (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  age INT
);
Copier après la connexion

Ensuite, nous démontrons les stratégies de verrouillage sous différents niveaux d'isolement des transactions :

  1. LIRE UNCOMMITTED :

    -- 执行事务1
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    START TRANSACTION;
    SELECT * FROM test_table WHERE id = 1;
    
    -- 执行事务2
    START TRANSACTION;
    UPDATE test_table SET age = 20 WHERE id = 1;
    COMMIT;
    
    -- 继续执行事务1
    SELECT * FROM test_table WHERE id = 1;
    COMMIT;
    Copier après la connexion

    Dans cet exemple, la transaction 1 lit les données modifiées mais non validées par la transaction 2.

  2. READ COMMITTED :

    -- 执行事务1
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
    START TRANSACTION;
    SELECT * FROM test_table WHERE id = 1;
    
    -- 执行事务2
    START TRANSACTION;
    UPDATE test_table SET age = 20 WHERE id = 1;
    COMMIT;
    
    -- 继续执行事务1
    SELECT * FROM test_table WHERE id = 1;
    COMMIT;
    Copier après la connexion

    Dans cet exemple, la transaction 1 ne peut lire que les données soumises par la transaction 2.

  3. LECTURE RÉPÉTABLE :

    -- 执行事务1
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    START TRANSACTION;
    SELECT * FROM test_table WHERE id = 1;
    
    -- 执行事务2
    START TRANSACTION;
    UPDATE test_table SET age = 20 WHERE id = 1;
    COMMIT;
    
    -- 继续执行事务1
    SELECT * FROM test_table WHERE id = 1;
    COMMIT;
    Copier après la connexion

    Dans cet exemple, la transaction 1 ajoute un verrou partagé lors de la lecture des données, et la transaction 2 attend que la transaction 1 libère le verrou partagé avant de pouvoir être exécutée.

  4. SÉRIALISABLE :

    -- 执行事务1
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
    START TRANSACTION;
    SELECT * FROM test_table WHERE id = 1;
    
    -- 执行事务2
    START TRANSACTION;
    UPDATE test_table SET age = 20 WHERE id = 1;
    COMMIT;
    
    -- 继续执行事务1
    SELECT * FROM test_table WHERE id = 1;
    COMMIT;
    Copier après la connexion

    Dans cet exemple, la transaction 1 ajoute un verrou partagé lors de la lecture des données, et la transaction 2 attend que la transaction 1 libère le verrou partagé avant de pouvoir être exécutée.

    Grâce aux exemples de code ci-dessus, nous pouvons voir comment les stratégies de verrouillage fonctionnent sous différents niveaux d'isolement des transactions. Dans le développement réel d'applications, il est indispensable de choisir le niveau d'isolation des transactions approprié, qui peut être sélectionné en fonction de scénarios commerciaux spécifiques et d'exigences de performances.

    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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le rôle et l'application pratique des symboles fléchés en PHP Le rôle et l'application pratique des symboles fléchés en PHP Mar 22, 2024 am 11:30 AM

Le rôle et l'application pratique des symboles fléchés en PHP En PHP, le symbole fléché (->) est généralement utilisé pour accéder aux propriétés et méthodes des objets. Les objets sont l'un des concepts de base de la programmation orientée objet (POO) en PHP. Dans le développement actuel, les symboles fléchés jouent un rôle important dans le fonctionnement des objets. Cet article présentera le rôle et l'application pratique des symboles fléchés et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Le rôle du symbole flèche pour accéder aux propriétés d'un objet. Le symbole flèche peut être utilisé pour accéder aux propriétés d'un objet. Quand on instancie une paire

Comment annuler la suppression de l'écran d'accueil sur iPhone Comment annuler la suppression de l'écran d'accueil sur iPhone Apr 17, 2024 pm 07:37 PM

Vous avez supprimé quelque chose d'important de votre écran d'accueil et vous essayez de le récupérer ? Vous pouvez remettre les icônes d’applications à l’écran de différentes manières. Nous avons discuté de toutes les méthodes que vous pouvez suivre et remettre l'icône de l'application sur l'écran d'accueil. Comment annuler la suppression de l'écran d'accueil sur iPhone Comme nous l'avons mentionné précédemment, il existe plusieurs façons de restaurer cette modification sur iPhone. Méthode 1 – Remplacer l'icône de l'application dans la bibliothèque d'applications Vous pouvez placer une icône d'application sur votre écran d'accueil directement à partir de la bibliothèque d'applications. Étape 1 – Faites glisser votre doigt sur le côté pour trouver toutes les applications de la bibliothèque d'applications. Étape 2 – Recherchez l'icône de l'application que vous avez supprimée précédemment. Étape 3 – Faites simplement glisser l'icône de l'application de la bibliothèque principale vers le bon emplacement sur l'écran d'accueil. Voici le schéma d'application

Du débutant au compétent : explorez différents scénarios d'application de la commande Linux tee Du débutant au compétent : explorez différents scénarios d'application de la commande Linux tee Mar 20, 2024 am 10:00 AM

La commande Linuxtee est un outil de ligne de commande très utile qui peut écrire la sortie dans un fichier ou envoyer la sortie à une autre commande sans affecter la sortie existante. Dans cet article, nous explorerons en profondeur les différents scénarios d'application de la commande Linuxtee, du débutant au compétent. 1. Utilisation de base Tout d'abord, jetons un coup d'œil à l'utilisation de base de la commande tee. La syntaxe de la commande tee est la suivante : tee[OPTION]...[FILE]...Cette commande lira les données de l'entrée standard et enregistrera les données dans

Découvrez les avantages et les scénarios d'application du langage Go Découvrez les avantages et les scénarios d'application du langage Go Mar 27, 2024 pm 03:48 PM

Le langage Go est un langage de programmation open source développé par Google et lancé pour la première fois en 2007. Il est conçu pour être un langage simple, facile à apprendre, efficace et hautement simultané, et est favorisé par de plus en plus de développeurs. Cet article explorera les avantages du langage Go, présentera quelques scénarios d'application adaptés au langage Go et donnera des exemples de code spécifiques. Avantages : Forte concurrence : le langage Go prend en charge de manière intégrée les threads-goroutine légers, qui peuvent facilement implémenter une programmation simultanée. Goroutin peut être démarré en utilisant le mot-clé go

La large application de Linux dans le domaine du cloud computing La large application de Linux dans le domaine du cloud computing Mar 20, 2024 pm 04:51 PM

La large application de Linux dans le domaine du cloud computing Avec le développement et la vulgarisation continus de la technologie du cloud computing, Linux, en tant que système d'exploitation open source, joue un rôle important dans le domaine du cloud computing. En raison de leur stabilité, de leur sécurité et de leur flexibilité, les systèmes Linux sont largement utilisés dans diverses plates-formes et services de cloud computing, fournissant une base solide pour le développement de la technologie du cloud computing. Cet article présentera le large éventail d'applications de Linux dans le domaine du cloud computing et donnera des exemples de code spécifiques. 1. Technologie de virtualisation d'applications de Linux dans la plate-forme de cloud computing Technologie de virtualisation

Comprendre le mécanisme et l'application de la gestion de la pile Golang Comprendre le mécanisme et l'application de la gestion de la pile Golang Mar 13, 2024 am 11:21 AM

Golang est un langage de programmation open source développé par Google qui possède de nombreuses fonctionnalités uniques en matière de programmation simultanée et de gestion de la mémoire. Parmi eux, le mécanisme de gestion de pile de Golang est une fonctionnalité importante. Cet article se concentrera sur le mécanisme et l'application de la gestion de pile de Golang et donnera des exemples de code spécifiques. 1. Gestion de la pile dans Golang Dans Golang, chaque goroutine possède sa propre pile. La pile est utilisée pour stocker des informations telles que les paramètres, les variables locales et les adresses de retour de fonction des appels de fonction.

Comprendre les horodatages MySQL : fonctions, fonctionnalités et scénarios d'application Comprendre les horodatages MySQL : fonctions, fonctionnalités et scénarios d'application Mar 15, 2024 pm 04:36 PM

L'horodatage MySQL est un type de données très important, qui peut stocker la date, l'heure ou la date plus l'heure. Dans le processus de développement actuel, l'utilisation rationnelle des horodatages peut améliorer l'efficacité des opérations de base de données et faciliter les requêtes et les calculs liés au temps. Cet article abordera les fonctions, les fonctionnalités et les scénarios d'application des horodatages MySQL, et les expliquera avec des exemples de code spécifiques. 1. Fonctions et caractéristiques des horodatages MySQL Il existe deux types d'horodatages dans MySQL, l'un est TIMESTAMP

Tutoriel Apple sur la façon de fermer les applications en cours d'exécution Tutoriel Apple sur la façon de fermer les applications en cours d'exécution Mar 22, 2024 pm 10:00 PM

1. Nous cliquons d’abord sur le petit point blanc. 2. Cliquez sur l'appareil. 3. Cliquez sur Plus. 4. Cliquez sur Sélecteur d'applications. 5. Fermez l'arrière-plan de l'application.

See all articles