Explicación de los espacios de tabla

Completado

Un espacio de tablas es un grupo de archivos de datos. Cada espacio de tablas puede almacenar datos para una o varias tablas. Hay tres tipos de tablespaces:

  • Espacio de tabla del sistema
  • Espacio de tabla de archivo por tabla
  • Espacio de tablas general

Para mostrar una lista completa de los espacios de tablas en el servidor MySQL, ejecute la consulta:

SELECT TABLESPACE_NAME, FILE_NAME FROM information_schema.FILES;

Esto devuelve una lista de espacios de tablas junto con sus nombres de archivo.

Los archivos de datos innoDB tienen una extensión .ibd.

Nota

MySQL realiza un escaneo de los tablespaces cuando se inicia, por lo que un gran número de tablespaces puede hacer que MySQL tarde más en iniciarse o experimente un failover.

Espacio de tabla del sistema

Cada base de datos MySQL tiene al menos un espacio de tabla, el espacio de tablas del sistema y puede crear más con la instrucción CREATE TABLESPACE.

Siempre hay un espacio de tabla del sistema, que es donde se almacenan los registros de deshacer y el diccionario de datos de InnoDB.

En Azure Database for MySQL, el parámetro de servidor innodb_data_file_path es un parámetro estático que se establece en autoextend. Esto configura el espacio de tablas del sistema para extender automáticamente, lo que significa que no se quedará sin espacio. Este parámetro no se puede modificar, por lo que nunca tendrá que preocuparse por cambiar el tamaño del espacio de tablas del sistema.

Espacio de tabla de archivo por tabla

De manera predeterminada, los datos de tabla e índice se almacenan en un espacio de tabla de archivo por tabla, o en un espacio de tabla de tabla única. Un espacio de tabla de archivo por tabla contiene una tabla con los datos e índices. Cuando se anula la tabla, también se anula el espacio de tabla de archivo por tabla.

El parámetro de servidor innodb_file_per_table define si cada tabla recién creada se crea en su propio espacio de tablas. De forma predeterminada, este parámetro se establece en ON. Si innodb_file_per_table se establece en OFF, se crean nuevas tablas en el espacio de tablas del sistema.

Sugerencia

Para obtener el mejor rendimiento, no cambie el valor predeterminado de innodb_file_per_table.

Espacio de tablas general

Si desea almacenar tablas en un espacio de tablas que cree, use la sintaxis :

CREATE TABLESPACE mytablespace ADD DATAFILE '/var/lib/mysql/mytablespace.ibd' engine = Innodb;

Para crear una tabla en el espacio de tablas general que ha creado, use la sintaxis siguiente:

CREATE TABLE new_table (myID INT) TABLESPACE = mytablespace;

Al crear un espacio de tablas general, la ubicación del archivo de datos es opcional. La sintaxis siguiente también funcionará:

CREATE TABLESPACE mytablespace ADD DATAFILE 'mytablespace.ibd' engine = Innodb;

Los espacios de tabla general no se anulan automáticamente, aunque se hayan anulado todas las tablas que contiene. Para anular un espacio de tabla general:

DROP TABLESPACE mytablespace;

Por lo general, es mejor mantener el valor predeterminado de crear cada nueva tabla en su propio espacio de tabla de archivo por tabla. Si tiene un gran número de tablas pequeñas, puede haber algún espacio o fragmentación sin usar, que debe administrarse, pero el rendimiento general será mejor.

Procedimiento recomendado de Tablespace

  • Cree todas las tablas en el espacio de tabla innodb_file_per_table.
  • Si hay una tabla de más de 1 TB de tamaño, considere la posibilidad de crear particiones de la tabla.
  • Incluso para tablas grandes, considere la posibilidad de usar el espacio de tabla de archivo por tabla. Esto evita que el espacio de tablas del sistema supere el límite máximo de almacenamiento.