Maison >base de données >tutoriel mysql >Introduction à l'apprentissage des transactions Mysql-InnoDB
Tutoriel vidéo MySQLLa colonne présente l'apprentissage des choses 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
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
Format du journal de rétablissement
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
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
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
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!