Maison  >  Article  >  base de données  >  Introduction à l'apprentissage des transactions Mysql-InnoDB

Introduction à l'apprentissage des transactions Mysql-InnoDB

coldplay.xixi
coldplay.xixiavant
2021-01-02 09:41:071894parcourir

Tutoriel vidéo MySQLLa colonne présente l'apprentissage des choses InnoDB

Introduction à l'apprentissage des transactions Mysql-InnoDB

Recommandé (gratuit) : Tutoriel vidéo mysql

Concepts de base des choses

Caractéristiques de choses (ACIDE)

  • atomicité

  • cohérence

  • isolement

  • Durabilité

Types de choses

  • Choses plates

  • Objets plats avec points de sauvegarde

  • Objets en chaîne Transactions imbriquées

  • Transactions distribuées

Mise en œuvre des choses

refaire et annuler refaire
refaire : assurer l'atomicité et la persistance des choses, les journaux physiques, en gros, c'est l'écriture séquentielle
annuler : assurer la cohérence des les choses, les journaux logiques, l'annulation générera une restauration, utilisée pour la restauration des choses et mvcc, la lecture et l'écriture aléatoires

redo

redo log buffer
redo log file

forcer le mécanisme de journalisation lors de la validation pour obtenir la persistance des choses

redo log buffer -> cache du système de fichiers-> (fsync) fichier disque

innodb_flush_log_at_trx_commit
0 : le thread maître termine l'écriture sur le disque
1 : Par défaut, fsync est requis pour chaque soumission de transaction
2 : Écriture dans le cache du système de fichiers, aucun fsync n'est effectué

bloc de journal

512 octets sont cohérents avec la taille de la montagne de disques, garantissant que l'écriture du journal est atomique et ne nécessite pas de double écriture ? La technologie

Introduction à lapprentissage des transactions Mysql-InnoDB

est divisée en 512 - 12 -8 = 492
En-tête du journal redo : 12 octets
Contenu du journal redo :
Queue du journal redo : 8 octets

LOG_BLOCK_HAR_NO [4 octets] : La position du bloc de journal dans le tampon de journal
LOG_BLOCK_HAR_DATA_LEN [2 octets] : La taille occupée par le bloc de journal
LOG_BLOCK_FIRST_REC_GROUP [2 octets] : Non. Le décalage d'un log
LOG_BLOCK_CHECKPOINT_NO [4 octets] : la valeur du 4ème octet du point de contrôle lors de sa dernière écriture ? ?

groupe de journaux

Plusieurs fichiers de journalisation composés de

fichier de journalisation

Introduction à lapprentissage des transactions Mysql-InnoDB

Format du journal de rétablissement

Introduction à lapprentissage des transactions Mysql-InnoDB

redo_log_type : type de journal de rétablissement
espace : ID de l'espace table
page_no : décalage de page

LSN (numéro de séquence du journal)

8 octets, augmentation monotone
Signification :
Retravailler Quantité totale d'écritures du journal
Emplacement du point de contrôle
Version de la page

Introduction à lapprentissage des transactions Mysql-InnoDB

annuler

annuler le segment : table partagée Dans l'espace

(128) segment d'annulation > (1024) segment d'annulation, la simultanéité des choses est limitée à 128*1024

format du journal d'annulation

insérer le journal d'annulation
mettre à jour le journal d'annulation

Introduction à lapprentissage des transactions Mysql-InnoDB

purge

engagement de groupe

Niveau d'isolement des choses

READ UNCOMMIT : l'utilisation des instructions de requête ne se verrouille pas et les lignes non validées peuvent être lues (Dirty Read)
READ COMMIT : uniquement les enregistrements Ajoutez des verrous d'enregistrement sans ajouter de verrous d'espacement entre les enregistrements, de sorte que les nouveaux enregistrements sont autorisé à être inséré à proximité des enregistrements verrouillés, de sorte que lorsque l'instruction de requête est utilisée plusieurs fois, des résultats différents peuvent être obtenus (lecture non répétable) EPEATABLE READ : lire la même plage de données plusieurs fois renverra un instantané de la première requête. Différentes lignes de données ne seront pas renvoyées, mais des lectures fantômes peuvent se produire ;
SERIALIZABLE : InnoDB remplace implicitement toutes les instructions de requête. L'ajout de verrous partagés résout le problème de lecture fantôme

Lecture sale : dans une transaction, des données non validées ; des autres transactions sont lues
Lecture non répétable : dans une transaction, la même ligne est enregistrée. A été visitée deux fois et a obtenu des résultats différents.
Lecture fantôme : dans une transaction, lorsque des enregistrements de la même plage sont lus, d'autres transactions ajoutent de nouveaux enregistrements à cette plage.

La raison de la lecture non répétable est que sous le niveau d'isolement de READ COMMITED, le moteur de stockage n'ajoutera pas de verrous de ligne lors de l'interrogation des enregistrements et verrouillera l'enregistrement avec id = 3.

Objets distribués

XA

Gestionnaires de ressources : fournit des méthodes pour accéder aux ressources de transaction
Transaction Maneger : coordonne les différentes parties participant aux choses mondiales.
Programme d'application : pratique pour définir des choses et spécifier des opérations dans des choses globales

Introduction à lapprentissage des transactions Mysql-InnoDB

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer