INFORMATION_SCHEMA es, en teoría, un conjunto de vistas especificadas en el estándar SQL que permiten al usuario inspeccionar los metadatos del sistema. ¿Cómo se implementa esto en MySQL?
Cuando me conecto a una instalación nueva, veo dos bases de datos: mysql
y information_schema
. Después de usar SHOW CREATE TABLE
declaraciones en la information_schema
base de datos, parece que no está implementado como un conjunto de vistas, sino con tablas base. ¿Es correcta esta suposición? ¿O hay otras tablas del sistema que están ocultas para el usuario?
mysql
information-schema
ivotron
fuente
fuente
Respuestas:
La base de datos INFORMATION_SCHEMA está compuesta de tablas temporales que utilizan el motor de almacenamiento MEMORY.
Ejemplo: Aquí está la tabla INFORMATION_SCHEMA.TABLES en MySQL 5.5.12 (versión de Windows)
No hay una carpeta física para esas tablas, ni siquiera archivos .frm. No puedes mysqldump. No puedes dejarlo caer. No puede agregarle tablas. No puedes soltar tablas de él. Entonces, ¿dónde están las mesas?
Todas las tablas en la base de datos INFORMATION_SCHEMA se almacenan directamente en la memoria como tablas del motor de almacenamiento MEMORY. Son totalmente internos a MySQL, por lo que los mecanismos .frm se manejan en mysqld. En mi respuesta, primero mostré el diseño de la tabla de INFORMATION_SCHEMA.TABLES. Es una tabla temporal en la memoria. Se manipula utilizando protocolos de motor de almacenamiento. Por lo tanto, cuando mysqld se cierra, todas las tablas de información_esquema se descartan. Cuando se inicia mysqld, todas las tablas de información_esquema se crean como tablas TEMPORALES y se vuelven a llenar con metadatos para cada tabla en la instancia de mysql.
La base de datos INFORMATION_SCHEMA se introdujo por primera vez en MySQL 5.0 para darle acceso a metadatos sobre tablas de otros motores de almacenamiento. Por ejemplo, podría hacer SHOW DATABASES para obtener una lista de bases de datos. También puede consultarlos de esta manera:
Puede recuperar nombres de tablas en una base de datos de dos maneras:
o
Desde su inicio, MySQL ha expandido la base de datos INFORMATION_SCHEMA para tener la lista de procesos (a partir de MySQL 5.1). En realidad, puede consultar la lista de procesos buscando consultas de larga duración que todavía se ejecutan al menos 10 minutos:
Puede usar INFORMATION_SCHEMA para hacer todas las cosas elaboradas: como:
Obtenga recuentos de todas las tablas utilizando motores de almacenamiento específicos:
Obtenga el tamaño recomendado de MyISAM Key Buffer en MB
Obtenga el tamaño recomendado de InnoDB Buffer Pool en GB
Obtenga el uso de disco de todas las bases de datos por motor de almacenamiento en MB
Créame, todavía hay usos más maravillosos para INFORMATION_SCHEMA que el tiempo no me permite discutir más.
Tenga en cuenta que INFORMATION_SCHEMA es tan sensible que si mysql se está ejecutando y usted hace lo siguiente:
y luego entra en mysql run
Verá la carpeta basura como una de las bases de datos.
Saberlo es muy vital para los DBA y los desarrolladores. Capítulo 20 (desarrolladores) y Capítulo 31 (DBA) del libro MySQL 5.0 Certification Study Guide
están allí para prepararse para los exámenes de certificación de desarrollador y DBA. Obtenga el libro, estudie bien esos capítulos y podría hacer grandes cosas con la información_SCHEMA de MySQL.
La base de datos INFORMATION_SCHEMA a partir de MySQL 5.5, ahora presenta complementos, variables globales (estado y estática), variables de sesión (estado y estática), estado del motor de almacenamiento, instrumentación de métricas de rendimiento, mapa de disparo, eventos (programables) y mucho más.
Lo siento, esto puede parecer WTMI, pero soy un gran defensor del uso de la base de datos INFORMATION_SCHEMA.
fuente