recherche
Maisonbase de donnéestutoriel mysqlExplication 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

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
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Expliquez le pool de tampons InNODB et son importance pour la performance.Expliquez le pool de tampons InNODB et son importance pour la performance.Apr 19, 2025 am 12:24 AM

InnodBBufferPool réduit les E / S de disque en mettant en cache des données et des pages d'indexation, améliorant les performances de la base de données. Son principe de travail comprend: 1. La lecture des données: lire les données de BufferPool; 2. Écriture de données: Après avoir modifié les données, écrivez dans BufferPool et actualisez-les régulièrement sur le disque; 3. Gestion du cache: utilisez l'algorithme LRU pour gérer les pages de cache; 4. Mécanisme de lecture: Chargez à l'avance des pages de données adjacentes. En dimensionner le tampon et en utilisant plusieurs instances, les performances de la base de données peuvent être optimisées.

MySQL vs d'autres langages de programmation: une comparaisonMySQL vs d'autres langages de programmation: une comparaisonApr 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.

Apprendre MySQL: un guide étape par étape pour les nouveaux utilisateursApprendre MySQL: un guide étape par étape pour les nouveaux utilisateursApr 19, 2025 am 12:19 AM

MySQL vaut la peine d'être appris car il s'agit d'un puissant système de gestion de la base de données open source adapté au stockage, à la gestion et à l'analyse des données. 1) MySQL est une base de données relationnelle qui utilise SQL pour faire fonctionner les données et convient à la gestion structurée des données. 2) Le langage SQL est la clé pour interagir avec MySQL et prend en charge les opérations CRUD. 3) Le principe de travail de MySQL inclut l'architecture client / serveur, le moteur de stockage et l'optimiseur de requête. 4) L'utilisation de base comprend la création de bases de données et de tables, et l'utilisation avancée implique de rejoindre des tables à l'aide de la jointure. 5) Les erreurs courantes incluent les erreurs de syntaxe et les problèmes d'autorisation, et les compétences de débogage incluent la vérification de la syntaxe et l'utilisation des commandes Explication. 6) L'optimisation des performances implique l'utilisation d'index, l'optimisation des instructions SQL et la maintenance régulière des bases de données.

MySQL: Compétences essentielles pour les débutants à maîtriserMySQL: Compétences essentielles pour les débutants à maîtriserApr 18, 2025 am 12:24 AM

MySQL convient aux débutants pour acquérir des compétences de base de données. 1. Installez les outils MySQL Server et Client. 2. Comprendre les requêtes SQL de base, telles que SELECT. 3. 掌握数据操作: : 创建表、插入、更新、删除数据。 4. 学习高级技巧: : 子查询和窗口函数。 5. 调试和优化: : 检查语法、使用索引、避免 Sélectionner * , 并使用 Limite。

MySQL: données structurées et bases de données relationnellesMySQL: données structurées et bases de données relationnellesApr 18, 2025 am 12:22 AM

MySQL gère efficacement les données structurées par la structure de la table et la requête SQL, et met en œuvre des relations inter-tableaux à travers des clés étrangères. 1. Définissez le format de données et tapez lors de la création d'une table. 2. Utilisez des clés étrangères pour établir des relations entre les tables. 3. Améliorer les performances par l'indexation et l'optimisation des requêtes. 4. Bases de données régulièrement sauvegarde et surveillent régulièrement la sécurité des données et l'optimisation des performances.

MySQL: fonctionnalités et capacités clés expliquésMySQL: fonctionnalités et capacités clés expliquésApr 18, 2025 am 12:17 AM

MySQL est un système de gestion de base de données relationnel open source qui est largement utilisé dans le développement Web. Ses caractéristiques clés incluent: 1. Prend en charge plusieurs moteurs de stockage, tels que InNODB et Myisam, adaptés à différents scénarios; 2. Fournit des fonctions de réplication à esclave maître pour faciliter l'équilibrage de la charge et la sauvegarde des données; 3. Améliorez l'efficacité de la requête grâce à l'optimisation des requêtes et à l'utilisation d'index.

Le but de SQL: interagir avec les bases de données MySQLLe but de SQL: interagir avec les bases de données MySQLApr 18, 2025 am 12:12 AM

SQL est utilisé pour interagir avec la base de données MySQL pour réaliser l'ajout de données, la suppression, la modification, l'inspection et la conception de la base de données. 1) SQL effectue des opérations de données via des instructions SELECT, INSERT, UPDATE, DELETE; 2) Utiliser des instructions Create, Alter, Drop pour la conception et la gestion de la base de données; 3) Les requêtes complexes et l'analyse des données sont mises en œuvre via SQL pour améliorer l'efficacité de la prise de décision commerciale.

MySQL pour les débutants: commencer la gestion de la base de donnéesMySQL pour les débutants: commencer la gestion de la base de donnéesApr 18, 2025 am 12:10 AM

Les opérations de base de MySQL incluent la création de bases de données, les tables et l'utilisation de SQL pour effectuer des opérations CRUD sur les données. 1. Créez une base de données: CreatedAtAbaseMy_First_DB; 2. Créez un tableau: CreateTableBooks (idIntauto_inCmentPrimaryKey, TitleVarchar (100) notnull, AuthorVarchar (100) notnull, publied_yearint); 3. Données d'insertion: INSERTINTOBOOKS (titre, auteur, publié_year) VA

See all articles

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit