Répertoire d'articles
Suite de l'article précédent
5 Architecture MySQL
Ci-dessous, nous sélectionnons certains des stockages les plus couramment utilisés Une brève explication du moteur .Le moteur de stockage utilisé par MySQL aura un impact direct sur les performances de la base de données. J'espère également que vous pourrez bien comprendre certaines des caractéristiques du moteur de stockage avant d'utiliser le moteur de stockage.
5.1 MyISAM
MyISAM était le moteur de stockage par défaut avant MySQL5.5. Pour cette raison, de nombreux serveurs utilisent encore le moteur de stockage MyISAM. Dans le même temps, MyISAM est actuellement le moteur de stockage utilisé par de nombreuses tables système et tables temporaires. Les tables temporaires mentionnées ici ne sont pas les tables que nous créons via create table
. Elles font référence lorsque le nombre dépasse une certaine taille lors d'opérations telles que. tri et regroupement , il existe des tables temporaires créées par l'optimiseur de requêtes.
Le moteur de stockage MyISAM est composé de MYD et MYI est l'extension du fichier de données et MYI est l'extension du fichier d'index. Ce moteur de stockage stocke les tables dans les fichiers de données et les fichiers d'index avec ces deux extensions.
Caractéristiques :
check table tablename
et restaurer la table via repair table tablename
. myisampack
pour compresser le tableau. La compression compresse la table indépendamment, donc lors de la lecture d'une ligne de données, il n'est pas nécessaire de décompresser la table entière. Restrictions :
Scénarios applicables :
5.2 Innodb
Innodb est le moteur de stockage par défaut pour MySQL 5.5 et les versions ultérieures Innodb est un moteur de stockage pour le stockage transactionnel, ce qui signifie qu'il prend en charge le traitement des transactions.
Innodb a son propre concept d'espace table, et les données sont stockées dans l'espace table, qui est déterminé par le paramètre innodb_file_per_table
Si ce paramètre est ON
, chaque table Innodb sera créée Un fichier système avec. une extension de ibd
. Si ce paramètre est OFF
, les données seront stockées dans l'espace table partagé du système, c'est-à-dire que ibdataX
représente un nombre, commençant par 1 par défaut. X
La commande pour visualiser ce paramètre est : show variables like 'innodb_file_per_table';
La commande pour modifier ce paramètre est : set global innodb_file_per_table=off;
5.2.1 Espace table système et table indépendante Comment choisir l'espace
Comparaison :
系统表空间 | 独立表空间 |
---|---|
无法简单的收缩文件大小 | 可以通过optimize table 命令收缩系统文件 |
会产生IO瓶颈 | 可以同时向多个文件刷新数据 |
Recommandation :
Étapes :
5.2.2 Fonctionnalités du moteur de stockage Innodb
5.2.3 Vérification de l'état Innodb
Vous pouvez utiliser la commande suivante pour vérifier l'état Innodb :show engine innodb status
5.2.4 Scénarios applicables
Innodb convient à la plupart des applications OLTP, car après la version mysql5.7, Innodb prend déjà en charge l'index de texte intégral et les fonctions spatiales.5.2.4 (Étendu) Qu'est-ce qu'un verrou
5.2.3.1 Qu'est-ce qu'un verrou ?
5.2 .3.2 Types de verrous :
5.2.3.3 Compatibilité entre le verrouillage en écriture et le verrouillage en lecture (compatibilité pour une ligne)
Verrouillage en écriture | Verrouillage en lecture | |
---|---|---|
Verrouillage en écriture | Incompatible | Incompatible |
Verrouillage en lecture | Incompatible | Compatible |
Dans les situations réelles, les résultats peuvent être différents du tableau ci-dessus, principalement parce que le mécanisme de verrouillage dans Innodb est une chose très complexe et qu'il existe de nombreux verrous qui affectent le résultat final.
5.2.3.4 Granularité du verrouillage :
5.2.3.5 Blocage et blocage
Blocage : le blocage est dû à la relation de compatibilité entre différents verrous. À un moment donné, le verrou d'une transaction doit attendre le verrouillage d'une autre transaction. être libérée. Les ressources qu’elle occupe forment un blocage.
Deadlock : Deadlock fait référence à une exception qui se produit lorsque deux transactions ou plus occupent les ressources que l'autre partie attend lors de l'exécution de la transaction. Comme le montre la définition, plusieurs transactions bloquées occupent les ressources qu'attend la transaction bloquée, et l'impasse se produit lorsque plusieurs transactions bloquées occupent les ressources que l'autre attend.
5.3 Moteur de stockage CSV
Le moteur de stockage CSV peut traiter les fichiers CSV comme des fichiers de table MySQL. Le format de stockage de ce moteur de stockage est celui des fichiers CSV ordinaires. du moteur de stockage CSV est tout à fait unique. Si nous stockons la table dans MyISAM ou Innodb, nous ne pouvons pas visualiser directement les fichiers de données car ces deux fichiers sont stockés au format binaire. Le moteur de stockage CSV est différent dans des fichiers. sous forme de texte, c'est-à-dire que nous pouvons le visualiser via la commande pour afficher le fichier, comme plus, ou utiliser la commande vi pour afficher et modifier le tableau dans le moteur de stockage CSV, à condition que le format et les exigences du fichier soient respectés. Les fichiers CSV sont remplis, nous n'avons pas à nous soucier de corrompre les données.
Lorsque nous créons la table du moteur de stockage CSV dans MySQL, nous devrions pouvoir voir les fichiers dans les 3 systèmes de fichiers. Ces trois noms de fichiers sont tous basés sur le nom de la table, mais ont respectivement les suffixes csv, csm et frm. Le fichier csv est le fichier de données du moteur de stockage CSV. Le fichier csm stocke les métadonnées de la table ainsi que l'état de la table et le volume de données. Le fichier FRM stocke les informations sur la structure de la table.
5.3.1 Fonctionnalités du moteur de stockage CSV
,
pour séparer, et le contenu du texte est placé entre guillemets doubles, comme indiqué ci-dessous : 5.3.2 Scénarios applicables du moteur de stockage CSV
Le moteur de stockage CSV convient comme table intermédiaire pour l'échange de données
5.4 Moteur de stockage d'archives
5.4.1 Fonctionnalités de stockage du système de fichiers
Archive Le moteur de stockage met en cache toutes les écritures et utilise zlib pour compresser les lignes insérées. Par conséquent, le moteur de stockage d'archive enregistre les E/S de disque par rapport aux tables du moteur de stockage MyISAM. Pour le même ordre de grandeur, le moteur de stockage d'archive enregistre les E/S de disque par rapport aux tables. du moteur de stockage MyISAM et Innodb économisent plus d'espace de stockage. Une table Innodb de plusieurs téraoctets stockée dans le moteur de stockage Archive peut nécessiter seulement quelques centaines de mégaoctets d'espace de stockage.
Les données de la table du moteur de stockage Archive sont un fichier avec le suffixe ARZ Comme les autres moteurs, il existe également un fichier système avec le suffixe frm utilisé pour stocker les informations structurelles de la table.
5.4.2 Fonctionnalités du moteur de stockage d'archives
insert
et select
5.4.3 Scénarios d'utilisation du moteur de stockage d'archives
Scénario 1 : Données de journalisation et de collecte de données
Parce qu'Archive ne le prend pas en charge Modification et suppression, et notre ORDB modifiera certainement les données, mais il est toujours utile pour certaines applications de type entrepôt ou certaines tables spéciales, telles que les tables d'enregistrement de journaux ou les tables de collecte de données, car il s'agit d'une grande quantité de données doit être collecté, le moteur de stockage Archive est donc plus adapté. Étant donné que le moteur de stockage Archive dispose du plus petit espace de stockage parmi tous les moteurs, il convient de noter que même dans les applications de collecte de données ou de journalisation, le moteur de stockage Archive ne peut pas mettre à jour ces données, donc lors de l'enregistrement des journaux ou si vous modifiez les données dans une collection de données. application, vous ne pourrez peut-être pas utiliser le moteur de stockage d'archives.
5.5 Moteur de stockage de mémoire
5.5.1 Caractéristiques de stockage du système de fichiers
Le moteur de stockage en mémoire est également appelé moteur de stockage HEAP, les données sont donc stockées en mémoire. Cela signifie que la table de données est jetable. Une fois le service MySQL redémarré, toutes les données du moteur de stockage en mémoire disparaîtront. sera conservé, car la création d'une table sous le moteur de stockage mémoire générera uniquement un fichier système frm, qui est utilisé pour enregistrer la structure de la table. C'est pourquoi les données seront perdues lors du redémarrage du serveur MySQL, mais pas la structure des tables.
D'après ses caractéristiques de stockage de fichiers, nous pouvons savoir que l'efficacité des E/S du moteur de stockage mémoire sera bien supérieure à celle de MyISAM, car seul l'index de MyISAM est stocké dans la mémoire et les données sont mises en cache par le système d'exploitation, tandis que le moteur de stockage mémoire Toutes les données et index du moteur sont stockés en mémoire. Jetons un coup d'œil aux caractéristiques fonctionnelles du moteur de stockage mémoire.
5.5.2 Fonctionnalités de mémoire
Caractéristiques :
5.5.3 Concepts confus en mémoire
Tableau des moteurs de stockage en mémoire :
Il peut être utilisé sur tous les systèmes, ce n'est pas le même A tableau temporaire.
Table temporaire :
Il existe deux types de tables temporaires. L'une est la table temporaire utilisée par le système utilisée par l'optimiseur de requêtes lors de l'optimisation des requêtes, qui est la table temporaire interne. La table temporaire utilisée par le système dépasse la limite. (en utilisant un grand champ BLOB ou TEXT), utilisez la table temporaire MyISAM et utilisez la table Mémoire si la limite n'est pas dépassée.
L'autre est une table temporaire créée via la commande create temporary table
La table créée peut utiliser n'importe quel moteur de stockage.
Quel que soit le type de table temporaire, elle n'est visible qu'en interne.
5.5.4 Scénarios d'utilisation de la mémoire
Les données en mémoire sont faciles à perdre, les données doivent donc être reproductibles.
5.6 Moteur de stockage fédéré
5.6.1 Fonctionnalités du
5.6.2 Comment utiliser Federated
Le moteur de stockage fédéré peut réaliser la fonction de connexion de SQL Server au serveur, mais en raison de ses propres performances, il est pas très bon, généralement le même objectif peut être atteint via la réplication, etc., donc dans la version actuelle de MySQL, le moteur de stockage fédéré est désactivé par défaut. Si vous devez utiliser le moteur de stockage fédéré, vous devez ajouter /usr/local/mysql/my.cnf
à federated=1
, puis redémarrer le serveur MySQL. Nous pouvons utiliser show engine
pour confirmer si le serveur MySQL actuel prend en charge le moteur de stockage fédéré.
Et utilisez la chaîne de connexion suivante dans l'instruction create table
, mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name
connexion de liaison au serveur distant : grant select,update,insert,delete on remote.remote_fet to fred_link@'127.0.0.1' identified by '123456'
pour déterminer la pertinence des informations interrogées sur le serveur distant et quelques informations sur les tables de base de données associées.
5.6.3 Scénarios applicables de Federated
6 Comment choisir le bon moteur de stockage
Conditions de référence :
Plus de recommandations d'apprentissage gratuites associées : tutoriel mysql(vidéo)
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!