Présentation de mysql notes-lock

Contrôle d'accès simultané

Méthodes de contrôle d'accès simultané pour garantir la cohérence des données:

(1) Verrou:

  Verrou ordinaire: exécution en série

  Verrouillage en lecture-écriture: lecture et lecture simultanées

(2) Données multi-versions: lecture et écriture simultanées

  (1) Lorsqu'une tâche d'écriture se produit, clonez une copie des données, distinguée par le numéro de version;

  (2) Écrire des tâches pour exploiter les données nouvellement clonées jusqu'à leur soumission

  (3) La tâche de lecture simultanée peut continuer à lire les données de l'ancienne version sans bloquer

Réalisez la lecture des données de l'ancienne version:

  Journal de rétablissement: Le journal de rétablissement est utilisé pour garantir la fonction ACID des données soumises.

    Si la mise à jour des données soumise par la transaction est écrite au hasard à chaque fois, les performances sont faibles. Optimisation: écrivez les données modifiées dans le journal de rétablissement dans l'ordre et faites-les périodiquement clignoter sur le disque.

  annulation du journal: garantie d'annulation du journal, les données non validées affectent les caractéristiques ACID de la base de données.

    Avant que la transaction ne soit validée, le miroir des données (l'ancienne version avant la modification) sera modifié. Lorsque la transaction est annulée ou que la base de données se bloque, l'ancienne version est restaurée.

    Insérez le comportement annuler le journal enregistrer PK, mettre à jour / supprimer le comportement annuler la ligne du magasin de journaux. Il existe des tampons séparés.

  Segment de restauration: stocker les journaux d'annulation

InnorDB atteint un niveau de concurrence élevé: InnorDB est un moteur de stockage basé sur le contrôle de concurrence multi-version (MVCC)

  Les données du segment d'annulation sont un instantané des données historiques. Les lectures instantanées (lectures cohérentes déverrouillées) sont la raison pour laquelle innorDB est si fortement simultané.

  Les sélections ordinaires sont des lectures d'instantanés, sauf si elles sont verrouillées, comme select .. fro update.

Quelle est la version des données lues par l'instantané?

  Sous RC, la lecture de l'instantané lit toujours le dernier instantané de données de ligne (transaction validée)

  Sous RR, la version de données de la première lecture est lue, indépendamment de l'heure de début de la transaction simultanée et de la relation d'exclusion mutuelle (sans verrouillage). Supposons que l'heure de la première lecture soit enregistrée comme T et que les enregistrements soumis après l'heure T ne soient pas lus.

Verrouiller

 Informations: https://mp.weixin.qq.com/s/tmkRAmc1M_Y23ynduBeP3Q

1. Sept types de serrures

1) Verrouillage auto-augmentant:

  Il s'agit d'un verrou spécial au niveau de la table qui insère la colonne AUTO_INCREMENT pour les transactions. Si une transaction est insérée, les autres transactions doivent attendre.

2) Serrure partagée / exclusive

  Verrou partagé S: verrou de lecture

  Verrouillage exclusif X: verrouillage en écriture. Serrure très solide, non compatible avec d'autres serrures.

  La lecture et la lecture peuvent être parallèles, lire et écrire, écrire et écrire s'excluent mutuellement.

3) Verrouillage d'intention

  Le verrou d'intention est une déclaration d'intention faite avant qu'une transaction veuille ajouter un verrou partagé / exclusif. Est un verrou au niveau de la table.

  Intention du verrou partagé IS: intention de transaction d'ajouter un verrou partagé à certaines lignes de la table

  Le verrou exclusif intentionnel est: la transaction ajoute intentionnellement un verrou x exclusif à certaines lignes de la table

 4) Insérer un verrou d'intention

  Spécifiquement pour les opérations d'insertion. Plusieurs transactions, dans le même index, dans la même plage, si la position d'insertion n'est pas en conflit, ne se bloqueront pas.

5) Verrouillage d'enregistrement

  Bloquer les enregistrements d'index. Par exemple: sélectionnez ... pour la mise à jour

6) Serrure de dégagement

  Intervalle de blocage des enregistrements d'index. Empêchez d'autres transactions d'insérer des données dans l'intervalle. Par exemple: sélectionnez .. entre ... et ... pour la mise à jour

7) Serrure à clé Pro

  Bloquer les enregistrements d'index et les intervalles d'index. Empêchez la lecture fantôme.

 

Serrure optimiste et serrure pessimiste. Le verrou optimiste utilise le numéro de version et le verrou pessimiste attend toujours;

Verrou de table:

table de verrouillage 

Verrou de ligne:

commencer à démarrer une transaction

sql

commettre

2. Affaires

1) Quatre caractéristiques:

Une atomicité: toutes les opérations de la transaction sont toutes exécutées ou pas exécutées du tout

Cohérence C: toutes les opérations réussissent ou échouent

I isolement: le processus de traitement des transactions n'est pas visible pour le monde extérieur

D Permanent: la modification des données est permanente

2) Problèmes causés par des transactions simultanées:

Mises à jour perdues: les verrous optimistes utilisent des numéros de version, les mises à jour de versions inférieures seront supprimées

Lecture incorrecte: la transaction A lit le contenu modifié par la transaction B mais non validé

Lecture non répétable: la transaction A lit la transaction B pour modifier le contenu soumis. Exemple: la transaction A revient à la requête pour la première fois et exécute le traitement commercial suivant. La transaction B soumet la modification des données. La transaction A revient à la requête. À ce stade, la modification des données peut affecter l'appréciation de la logique métier de la transaction A.

Lecture magique: la transaction A lit les données mises à jour soumises par la transaction B. Exemple: Transaction A première requête, seules trois données doivent être modifiées, la transaction B soumet de nouvelles données et enfin met à jour quatre données.

 

3) Niveau d'isolation des transactions: le niveau d'isolation par défaut de MySQL est la lecture répétable en lecture répétée (RR)

Afficher le niveau d'isolement des transactions: afficher des variables comme 'tx_isolation' 

Niveau d'isolement Lecture sale  Non répétable Lecture fantôme
Lire sans engagement Oui Oui Oui
Lire soumis Non Oui Oui
Lecture répétable Non Non Oui
Sérialisable Non Non Non

 

Mécanisme mvcc de lecture répétable:

L'opération de sélection ne met pas à jour le numéro de version, il s'agit d'une lecture instantanée (version historique)

insérer, mettre à jour, supprimer mettra à jour le numéro de version, vous pouvez interroger les modifications soumises par d'autres transactions (qui apparaîtront comme une lecture magique)

4) Suggestions d'optimisation:

1. Autant que possible, laissez toute la récupération des données se faire via l'index pour éviter l'escalade des verrous de ligne sans index en verrous de table

2. Récupérez les conditions autant que possible pour éviter les verrous d'écart

3. Contrôlez la taille de la transaction autant que possible pour réduire la quantité de ressources verrouillées et la durée

4. Isolement des transactions aussi faible que possible

Je suppose que tu aimes

Origine www.cnblogs.com/hongyedeboke/p/12716040.html
conseillé
Classement