¿Qué espacios de tabla hay en la base de datos? ¿Cuál es la función de cada tablespace?
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/nvmee 0n 1p 1:3 gnewraw /dev/nvme0n1p2:2Gnewraw
Espacio de tabla del sistema ¿Qué contiene?
Los contenidos específicos incluyen: búfer de escritura dual, 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 resulta en 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, 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: Método 1: Abrir en el archivo de configuración. Al abrir un único espacio de tabla en el archivo de configuración se establece el parámetro innodb_filer_per_table para que se abra un único espacio de tabla de forma predeterminada para todas las tablas de la biblioteca actual. Innodb_file_per_table=1 Además, también puede especificar un único espacio de tabla MySQL》; crear tabla t 1 (id int, r 1 char (36)) espacio de tabla innodb _ file _ per _ table
La consulta es normal, 0 filas afectadas (0,04 segundos)
Además de resolver varias deficiencias del espacio de tablas del sistema mencionadas anteriormente, un único espacio de tablas tiene otras ventajas, como las siguientes:
1 La operación de truncar tabla es más rápida 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 es. colocados en un SSD más rápido. En discos lentos, coloque tablas que requieran lecturas aleatorias frecuentes.
mysql & gt create table 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 al mismo como la tabla original.
Tres. Espacio de tabla general
El espacio de tabla general apareció por primera vez en MySQL Cluster, 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úblico 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.