¿Cuál es la diferencia específica entre el esquema de base de datos y el espacio de tabla? Un esquema de base de datos es la estructura lógica de todos los datos. El espacio de tabla almacena todos los datos de la tabla.
Hay un archivo llamado ibdata1 en el directorio de datos de MySQL, que puede guardar una o más tablas.
923275 12m-rw-r-1 MySQL 12m 18 de marzo 10:42 ibdata 1
Este archivo es el archivo de espacio de tablas del sistema MySQL. El valor predeterminado es 1, puede haber varios archivos. Simplemente defínalo en el archivo de configuración my.cnf.
innodb_data_file_path = IB data 1: 200m; ibdata 2: 200m: auto extend: Max: 800m El espacio de la tabla del sistema no solo puede estar compuesto por archivos, sino también por sistemas de archivos. de no Los bloques de disco compuestos por sistemas de archivos, como dispositivos sin formato, se definen de manera muy simple: innodb _ data _ file _ path =/dev/NV mee 0n 1p 1: 3 gnewraw /dev/nvme0n1p2: 2Gnewraw
Tabla del sistema ¿Qué hay en el espacio?
Los contenidos específicos incluyen: búfer de doble escritura, búfer de cambio, diccionario de datos (anterior a MySQL 8.0), datos de tabla e índices de tabla.
Entonces, ¿por qué la versión principal de MySQL no tiene el espacio de tabla del sistema de forma predeterminada?
La razón es que el espacio de la tabla del sistema tiene tres deficiencias más importantes: Razón 1: no puede reducir automáticamente el espacio en disco, lo que provoca una gran pérdida de espacio. Este espacio no se libera automáticamente incluso si se eliminan todas las tablas que contiene.
Segundo, espacio de tabla única
Un espacio de tabla única es diferente del espacio de tabla del sistema. Cada espacio de tabla tiene una relación uno a uno con una tabla y cada tabla tiene su propio espacio de tabla. En concreto, aparece como un archivo con un sufijo. ibd en el disco. Por ejemplo, en la tabla t1, el archivo de espacio de tabla correspondiente es T1. IBD 91710796k-RW-R-1 MySQL MySQL 96K 18 de marzo a las 16:16.
¿Cómo se aplica un único espacio de tabla a una tabla específica?
Hay dos formas: forma 1: Abrir en el archivo de configuración. Abra el espacio de tabla única en el archivo de configuración y establezca el parámetro innodb_filer_per_table, de modo que el espacio de tabla única se abra para todas las tablas de la biblioteca actual de forma predeterminada. Innodb_file_per_table=1 Además, también puede especificar un único espacio de tabla MySQL>; crear tabla t1 (id int, r1 char(36)) espacio de tabla innodb_file_per_table
La consulta es normal, 0 filas se ven afectadas ( 0,04 segundos)
Además de resolver las diversas deficiencias del espacio de tabla del sistema mencionadas anteriormente, un único espacio de tabla tiene otras ventajas, como las siguientes:
1.truncar tabla La operación es más rápido que cualquier otro espacio de tabla;
2. Se pueden especificar diferentes tablas en diferentes directorios de disco según los escenarios de uso;
Por ejemplo, la tabla de registro se coloca en un disco más lento. En el SSD, coloque tablas que requieran lecturas aleatorias frecuentes en el SSD.
mysql gt crea la tabla ytt_dedicated (id int) directorio de datos = '/var/lib/MySQL-files';
La consulta es normal, 0 filas están afectadas (0,04 segundos) 3. La optimización de tablas se puede utilizar para reducir o reconstruir tablas que se agregan, eliminan y modifican con frecuencia. El proceso general es el siguiente: cree la misma estructura de tabla y archivos de datos que la tabla original, copie los datos reales a un archivo temporal, elimine la definición de tabla original y los archivos de datos y, finalmente, cambie el nombre del archivo temporal para que sea el Igual que la tabla original.
Tres.
Espacio de tabla general
El espacio de tabla general apareció por primera vez en MySQL Cluster, que es el motor NDB. Introducido al motor InnoDB desde MySQL 5.7. Al igual que el espacio de tabla del sistema, el espacio de tabla pública también es un espacio de tabla compartido. Cada tablespace puede contener una o más tablas, lo que significa que existe una relación de uno a muchos entre los tablespaces y las tablas normales.