L'INFORMATION_SCHEMA est, en théorie, un ensemble de vues spécifié dans la norme SQL qui permet à l'utilisateur d'inspecter les métadonnées du système. Comment est-ce implémenté dans MySQL?
Lorsque je me connecte à une nouvelle installation, je vois deux bases de données: mysql
et information_schema
. Après avoir utilisé des SHOW CREATE TABLE
instructions sur la information_schema
base de données, il semble qu'il ne soit pas implémenté comme un ensemble de vues, mais plutôt avec des tables de base. Cette hypothèse est-elle correcte? Ou y a-t-il d'autres tables système qui sont cachées à l'utilisateur?
mysql
information-schema
ivotron
la source
la source
Réponses:
La base de données INFORMATION_SCHEMA est constituée de tables temporaires utilisant le moteur de stockage MEMORY.
Exemple: voici la table INFORMATION_SCHEMA.TABLES dans MySQL 5.5.12 (version Windows)
Il n'y a pas de dossier physique pour ces tables, pas même les fichiers .frm. Vous ne pouvez pas le masquer. Vous ne pouvez pas le laisser tomber. Vous ne pouvez pas y ajouter de tables. Vous ne pouvez pas en supprimer de tables. Alors, où sont les tables ???
Toutes les tables de la base de données INFORMATION_SCHEMA sont stockées directement en mémoire en tant que tables du moteur de stockage MEMORY. Ils sont totalement internes à MySQL, donc les mécanismes .frm sont gérés dans mysqld. Dans ma réponse, j'ai d'abord montré la disposition de la table INFORMATION_SCHEMA.TABLES. Il s'agit d'une table temporaire en mémoire. Il est manipulé à l'aide des protocoles du moteur de stockage. Ainsi, lorsque mysqld est arrêté, toutes les tables information_schema sont supprimées. Lorsque mysqld est démarré, toutes les tables information_schema sont créées en tant que tables TEMPORARY et remplies de métadonnées pour chaque table de l'instance mysql.
La base de données INFORMATION_SCHEMA a été introduite pour la première fois dans MySQL 5.0 pour vous donner accès aux métadonnées sur les tables d'autres moteurs de stockage. Par exemple, vous pouvez faire SHOW DATABASES pour obtenir une liste de bases de données. Vous pouvez également les interroger comme ceci:
Vous pouvez récupérer les noms de table dans une base de données de deux manières:
ou
Depuis sa création, MySQL a étendu la base de données INFORMATION_SCHEMA pour avoir la liste des processus (à partir de MySQL 5.1). Vous pouvez réellement interroger la liste de processus à la recherche de longues requêtes qui s'exécutent encore au moins 10 minutes:
Vous pouvez utiliser le INFORMATION_SCHEMA pour faire toutes les choses élaborées: telles que:
Obtenez le nombre de toutes les tables à l'aide de moteurs de stockage spécifiques:
Obtenez la taille de mémoire tampon de clé MyISAM recommandée en Mo
Obtenez la taille de pool de mémoire tampon InnoDB recommandée en Go
Obtenir l'utilisation du disque de toutes les bases de données par moteur de stockage en Mo
Croyez-moi, il existe des utilisations encore plus merveilleuses pour INFORMATION_SCHEMA que le temps ne me permet pas de discuter plus avant.
Veuillez garder à l'esprit que INFORMATION_SCHEMA est si sensible que si mysql est en cours d'exécution et que vous effectuez les opérations suivantes:
puis allez dans mysql run
Vous verrez le dossier indésirable comme l'une des bases de données.
Le savoir est très important pour les administrateurs de base de données et les développeurs. Chapitre 20 (développeurs) et Chapitre 31 (DBA) du livre MySQL 5.0 Certification Study Guide
sont là pour se préparer aux examens de certification développeur et DBA. Obtenez le livre, étudiez bien ces chapitres et vous pourriez faire de grandes choses avec INFORMATION_SCHEMA de MySQL.
La base de données INFORMATION_SCHEMA à partir de MySQL 5.5, comprend désormais des plugins, des variables globales (état et statique), des variables de session (état et statique), l'état du moteur de stockage, l'instrumentation des mesures de performances, la carte de déclenchement, les événements (programmables) et bien plus encore.
Désolé, cela peut ressembler à WTMI, mais je suis un grand partisan de l'utilisation de la base de données INFORMATION_SCHEMA.
la source