Maison base de données tutoriel mysql Explication détaillée des transactions de la base de données MySQL et du moteur de stockage

Explication détaillée des transactions de la base de données MySQL et du moteur de stockage

Nov 27, 2019 pm 06:07 PM
mysql 事务 存储引擎 数据库

Explication détaillée des transactions de la base de données MySQL et du moteur de stockage

1. Bases de données relationnelles et bases de données non relationnelles

1. 🎜>

1) Les données apparaissent sous la forme d'un tableau

2) Chaque ligne a différents noms d'enregistrement

3) Le champ de données correspondant au nom de l'enregistrement dans chaque colonne

4) De nombreuses lignes et colonnes forment un formulaire

5) Plusieurs formulaires forment une base de données

2. Avantages de la base de données relationnelle :

1) Requêtes complexes : les instructions SQL peuvent être utilisées pour plus de commodité Effectuez des requêtes de données très complexes entre une table et plusieurs tables.

2) Prise en charge des transactions : permet de répondre aux exigences d'accès aux données avec des performances de sécurité élevées.

3. Avantages des bases de données non relationnelles :

1) Performance : NOSQL est basé sur des paires clé-valeur, que l'on peut imaginer. sous forme de tables La relation correspondante entre la clé primaire et la valeur n'a pas besoin d'être analysée par la couche SQL, les performances sont donc très élevées.

2) Évolutivité : De plus, parce qu'il est basé sur des paires clé-valeur, il n'y a pas de couplage entre les données, il est donc très facile de l'étendre horizontalement.

Question : Quelles sont les différences entre les trois bases de données traditionnelles ?

Réponse : Les trois sont basés sur la connexion entre les données. La base de données hiérarchique a une structure arborescente et la base de données réseau a une structure de pointeur de lien. -structure de table dimensionnelle.

2. Transaction (ACID)

Une transaction est une série de transactions exécutées comme une seule unité logique de Opérations de travail, ces opérations sont soumises au système ensemble dans leur ensemble, et soit toutes sont exécutées, soit aucune d'entre elles n'est exécutée. Une transaction est une unité logique de travail indivisible.

Les transactions doivent avoir les quatre attributs suivants, appelés attributs ACID :

Atomicité (atomicité) : Une transaction est une opération complète. Chaque opération d'une chose est indissociable (atomique) ; soit toutes sont exécutées, soit aucune n'est exécutée

Consistance (cohérence)  : Lorsque la transaction est terminée, les données doit être dans un état cohérent ;

Isolement (isolement)  : Toutes les transactions simultanées qui modifient les données sont isolées les unes des autres, ce qui indique que les transactions doivent être indépendantes. , elle ne doit en aucun cas dépendre ou affecter d'autres transactions

Durabilité (durabilité)  : Une fois la transaction terminée, ses modifications dans la base de données sont permanentes ; , le journal des transactions peut maintenir la persistance des transactions.

Niveau d'isolement de la transaction :

Lire le contenu non engagé (également appelé dirty read read non validé) : signifie que toutes les transactions peuvent voir les résultats d'exécution d'autres transactions non validées. Il peut y avoir des problèmes de lecture sale, de lecture non reproductible et de lecture fantôme.

Lire le contenu validé (lire validé) : une transaction ne peut voir que les modifications apportées par les transactions validées. Les lectures sales peuvent être évitées, et des problèmes peuvent survenir avec les lectures non répétables et les lectures fantômes.

Lecture répétable (lecture répétable) : il s'agit du niveau d'isolation des transactions par défaut de MySQL. Il garantit que lorsque plusieurs instances de la même transaction lisent des données simultanément, elles le font. verra les mêmes lignes de données. Les lectures sales et les lectures non répétables peuvent être évitées, et des lectures fantômes peuvent se produire.

Sérialisable (sérialisable) : il s'agit du niveau d'isolement le plus élevé. Il ajoute un verrou partagé à chaque ligne de données lues pour éviter tout conflit de lecture. les uns les autres, résolvant ainsi le problème de la lecture fantôme. Les lectures sales, les lectures non répétables et les lectures fantômes peuvent être évitées.

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

1. 🎜> : Deux transactions T1 et T2 ont lu et modifié les mêmes données. Le résultat soumis par T2 écrase le résultat soumis par T1, entraînant la perte de la modification de T1.

2. Lecture sale : La transaction T1 a modifié certaines données et les a réécrites sur le disque. Après que la transaction T2 ait lu les mêmes données, T1 en raison de certaines données. La raison est révoquée. À ce moment, les données modifiées de T1 sont restaurées à leur valeur d'origine. Les données lues par T2 sont incohérentes avec les données de la base de données. Les données lues par T2 sont alors des données « sales », c'est-à-dire incorrectes. données.

3. Lecture non répétable  : fait référence à la lecture des mêmes données plusieurs fois au sein d'une transaction. Avant la fin de cette transaction, une autre transaction a également accédé aux mêmes données. Ensuite, entre les deux données lues lors de la première transaction, du fait de la modification de la deuxième transaction, les données lues deux fois par la première transaction peuvent être différentes. Cela signifie que les données lues deux fois par la même requête au sein d'une transaction sont différentes, on parle donc de lecture non répétable.

4. Lecture fantôme : Par exemple : Il y a actuellement 10 employés avec un salaire de 5 000. La transaction A lit les 10 employés avec un salaire de 5 000. A cette époque, la transaction B a inséré un enregistrement avec un salaire de 5 000. À ce stade, la transaction A lit à nouveau les employés avec un salaire de 5 000 et l'enregistrement est 11. A ce moment, une lecture fantôme se produit.

Quelle est la différence entre une lecture non répétable et une lecture fantôme ? L'objectif de la lecture non répétable est la modification, et l'objectif de la lecture fantôme est l'ajout ou la suppression.

MVCC (mécanisme de contrôle de concurrence multi-version) : Le MVCC d'InnoDB est transmis après chaque ligne d'enregistrements. est obtenu en sauvegardant deux colonnes cachées. L'heure de création de la ligne et l'heure de suppression de la ligne sont respectivement enregistrées (ce qui est stocké ici n'est pas la valeur temporelle réelle, mais le numéro de version du système). Chaque fois qu'une nouvelle transaction est démarrée, le numéro de version du système est automatiquement incrémenté. Le numéro de version du système au début de la transaction sera utilisé comme ID de transaction pour comparer avec le numéro de version de chaque ligne d'enregistrements interrogés. Après avoir utilisé MVCC, les lectures fantômes ne se produiront pas sous le niveau d'isolement de lecture répétable.

3. Moteur de stockage

Le moteur de stockage est l'organisation logicielle sous-jacente de la base de données. Le système de gestion de base de données (SGBD) utilise les données. moteur pour créer, interroger, mettre à jour et supprimer des données.

1. InnoDB (méthode d'index clusterisé)

La structure de stockage sous-jacente d'innodb est un arbre B+, et chaque nœud de l'arbre correspond sur une page de innodb , la taille de la page est fixe, généralement définie sur 16 Ko. Les nœuds non-feuilles n'ont que des valeurs clés et les nœuds feuilles contiennent des données complètes.

Scénarios d'utilisation : 1) Tables fréquemment mises à jour qui gèrent plusieurs demandes de mise à jour simultanées

2) Prise en charge des tables sécurisées pour les transactions (ACID), prend en charge les verrous de ligne et les clés étrangères

3) Peut être restauré via les journaux bin-log, etc.

innodb si aucune clé primaire n'est défini, une clé primaire de 6 octets sera automatiquement générée (non visible par l'utilisateur).

2. MyISAM (méthode d'index non clusterisé)

MyISAM était le moteur de stockage par défaut de MySQL avant 5.1, qui mettait l'accent sur les performances, mais il ne prend pas en charge les transactions, ni les verrous de ligne et les clés étrangères. Il prend en charge les verrous de table lors de l'insertion ou de la mise à jour de données, la table entière doit être verrouillée et l'efficacité sera moindre. Seul l'index est mis en cache, pas les données réelles. MyISAM lit les données très rapidement et n'occupe pas beaucoup de ressources de mémoire et de stockage.

MyISAM ne permet l'existence d'aucune clé primaire et est une structure d'index statique.

Question : Quelle est la différence entre MyISAM et InnoDB dans MySQL ?

Réponse : Dans la base de données MySQL, les deux moteurs les plus couramment utilisés sont innodb et myisam. InnoDB est actuellement le moteur de stockage par défaut pour MySQL.

1) Transactions : MyISAM met l'accent sur les performances et la vitesse des requêtes est plus rapide que le type InnoDB, mais il ne prend pas en charge les transactions. InnoDB fournit un support pour les transactions.

2) Clés étrangères : MyISAM ne prend pas en charge les clés étrangères, mais InnoDB prend en charge les clés étrangères.

3) Verrous : MyISAM ne prend en charge que les verrous au niveau de la table. InnoDB prend en charge les verrous au niveau de la ligne et les verrous au niveau de la table. La valeur par défaut est que les verrous au niveau de la ligne améliorent considérablement les performances. des performances simultanées multi-utilisateurs. innodb est plus adapté aux situations où il existe de nombreuses opérations d'insertion et de mise à jour, tandis que myisam convient aux situations où les requêtes sont fréquentes. De plus, le verrouillage des lignes de la table innodb n'est pas absolu. Si MySQL ne peut pas déterminer la plage à analyser lors de l'exécution d'une instruction SQL, innodb verrouillera également la table entière, par exemple : update table set num=1 which name like ". %aaa%".

4) Index de texte intégral : MyISAM prend en charge l'index de texte intégral, Innodb ne prend pas en charge l'index de texte intégral. innodb fournit un support d'index en texte intégral à partir de MySQL 5.6.

5) Clé primaire de table : Myisam permet aux tables sans clés primaires d'exister ; innodb : Si aucune clé primaire n'est définie, une clé primaire de 6 octets sera automatiquement générée (non visible par l'utilisateur).

6) Le nombre spécifique de lignes dans le tableau : myisam : sélectionnez count(*) dans le tableau, myisam lit simplement le nombre de lignes enregistrées. Parce que myisam a un compteur intégré, il lit directement à partir du compteur lors du comptage (*).

innodb : n'enregistre pas le nombre spécifique de lignes dans la table. C'est-à-dire que lors de l'exécution de select count(*) from table, innodb analysera la table entière pour calculer le nombre de lignes.

Apprentissage recommandé : Tutoriel 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!

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Sujets chauds

Tutoriel Java
1664
14
Tutoriel PHP
1268
29
Tutoriel C#
1246
24
Mysql et phpmyadmin: fonctionnalités et fonctions de base Mysql et phpmyadmin: fonctionnalités et fonctions de base Apr 22, 2025 am 12:12 AM

MySQL et PHPMyAdmin sont de puissants outils de gestion de la base de données. 1) MySQL est utilisé pour créer des bases de données et des tables et pour exécuter des requêtes DML et SQL. 2) PHPMYADMIN fournit une interface intuitive pour la gestion des bases de données, la gestion de la structure de la table, les opérations de données et la gestion de l'autorisation des utilisateurs.

MySQL vs d'autres langages de programmation: une comparaison MySQL vs d'autres langages de programmation: une comparaison Apr 19, 2025 am 12:22 AM

Par rapport à d'autres langages de programmation, MySQL est principalement utilisé pour stocker et gérer les données, tandis que d'autres langages tels que Python, Java et C sont utilisés pour le traitement logique et le développement d'applications. MySQL est connu pour ses performances élevées, son évolutivité et son support multiplateforme, adapté aux besoins de gestion des données, tandis que d'autres langues présentent des avantages dans leurs domaines respectifs tels que l'analyse des données, les applications d'entreprise et la programmation système.

Le rôle d'Oracle dans le monde des affaires Le rôle d'Oracle dans le monde des affaires Apr 23, 2025 am 12:01 AM

Oracle n'est pas seulement une entreprise de base de données, mais aussi un leader des systèmes de cloud computing et ERP. 1. Oracle fournit des solutions complètes de la base de données aux services cloud et aux systèmes ERP. 2. OracleCloud défie AWS et Azure, fournissant des services IaaS, PaaS et SaaS. 3. Les systèmes ERP d'Oracle tels que E-BusinessSuite et FusionApplications aident les entreprises à optimiser les opérations.

Expliquez le but des clés étrangères dans MySQL. Expliquez le but des clés étrangères dans MySQL. Apr 25, 2025 am 12:17 AM

Dans MySQL, la fonction des clés étrangères est d'établir la relation entre les tables et d'assurer la cohérence et l'intégrité des données. Les clés étrangères maintiennent l'efficacité des données grâce à des contrôles d'intégrité de référence et aux opérations en cascade. Faites attention à l'optimisation des performances et évitez les erreurs courantes lorsque vous les utilisez.

Comparez et contrastez MySQL et Mariadb. Comparez et contrastez MySQL et Mariadb. Apr 26, 2025 am 12:08 AM

La principale différence entre MySQL et MARIADB est les performances, les fonctionnalités et la licence: 1. MySQL est développé par Oracle, et MariADB est sa fourche. 2. MariaDB peut mieux fonctionner dans des environnements à haute charge. 3.MariaDB fournit plus de moteurs et de fonctions de stockage. 4.MySQL adopte une double licence et MariaDB est entièrement open source. L'infrastructure existante, les exigences de performance, les exigences fonctionnelles et les coûts de licence doivent être pris en compte lors du choix.

SQL vs MySQL: clarifier la relation entre les deux SQL vs MySQL: clarifier la relation entre les deux Apr 24, 2025 am 12:02 AM

SQL est un langage standard pour gérer les bases de données relationnelles, tandis que MySQL est un système de gestion de bases de données qui utilise SQL. SQL définit les moyens d'interagir avec une base de données, y compris les opérations CRUD, tandis que MySQL implémente la norme SQL et fournit des fonctionnalités supplémentaires telles que les procédures stockées et les déclencheurs.

Redis: Comprendre son architecture et son objectif Redis: Comprendre son architecture et son objectif Apr 26, 2025 am 12:11 AM

Redis est un système de stockage de structure de données de mémoire, principalement utilisé comme base de données, cache et courtier de messages. Ses caractéristiques principales incluent un modèle unique, un multiplexage d'E / S, un mécanisme de persistance, des fonctions de réplication et de clustering. Redis est couramment utilisé dans les applications pratiques pour la mise en cache, le stockage de session et les files d'attente de messages. Il peut améliorer considérablement ses performances en sélectionnant la bonne structure de données, en utilisant des pipelines et des transactions, et en surveillant et en réglage.

Comment stocker en toute sécurité des objets JavaScript contenant des fonctions et des expressions régulières dans une base de données et restaurer? Comment stocker en toute sécurité des objets JavaScript contenant des fonctions et des expressions régulières dans une base de données et restaurer? Apr 19, 2025 pm 11:09 PM

Gérer en toute sécurité les fonctions et les expressions régulières dans JSON dans le développement frontal, JavaScript est souvent nécessaire ...

See all articles