mostrar ejemplos comandos mysql database database-design tablespace

ejemplos - tablespace mysql 8



¿Qué es un tablespace y por qué se utiliza? (4)

Mientras investigaba un problema, me encontré con este error:

30503 [ERROR] InnoDB: se intentó abrir un espacio de tabla previamente abierto. Anterior tablespace mysql / innodb_index_stats usa el ID de espacio: 2 en filepath: ./mysql/innodb_index_stats.ibd. No se puede abrir el espacio de tabla Mydb / be_command_log que usa el ID de espacio: 2 en filepath: ./Mydb/be_command_log.ibd

Después de leer un poco sobre este problema, llegué a saber que este es un problema conocido de MySQL .

Pero mi problema es que no sé mucho sobre cómo funcionan realmente los espacios de tabla. ¿Cómo son útiles? Leí esta definición , pero no da toda la información.

¿Alguien puede compartir información detallada sobre qué son los espacios de tabla y cómo funcionan?


De forma predeterminada, InnoDB contiene solo un espacio de tabla denominado espacio de tabla del sistema cuyo identificador es 0. Se pueden crear más espacios de tabla indirectamente utilizando el parámetro de configuración innodb_file_per_table. Un espacio de tabla consiste en una cadena de archivos. El tamaño de los archivos no tiene que ser divisible por el tamaño del bloque de la base de datos, ya que podemos dejar el último bloque incompleto sin usar. Cuando se agrega un nuevo archivo al espacio de tablas, también se especifica el tamaño máximo del archivo. En este momento, creemos que es mejor extender el archivo a su tamaño máximo ya en la creación del archivo, porque así podemos evitar la extensión dinámica del archivo cuando se necesita más espacio para el espacio de tabla. Los archivos de datos se extienden dinámicamente, pero los archivos de registro de rehacer están asignados previamente. Además, como ya se mencionó anteriormente, solo el espacio de tabla del sistema puede tener más de un archivo de datos. También se menciona claramente que, aunque el espacio de tablas puede tener varios archivos, se los considera como un solo archivo grande concatenado. Por lo tanto, el orden de los archivos dentro del espacio de tablas es importante.

Desde https://blogs.oracle.com/mysqlinnodb/entry/data_organization_in_innodb


Un archivo de datos que puede contener datos para una o más tablas InnoDB e índices asociados.

Hay muchos tipos de espacios de tablas basados ​​en la configuración y la información de la mesa por grupo. Estos son,

a. Espacio de tabla del sistema b. Archivo por tablespace c. Espacio de tabla general

El espacio de tabla del sistema contiene ,

  1. Diccionario de datos InnoDB.
  2. DoubleWrite Buffer.
  3. Cambiar búfer
  4. Deshacer registros.

Aparte de esto también contiene,

  1. Mesas &
  2. Índice de datos

Archivo asociado es .idbdata1

La opción innodb_file_per_table , que está habilitada de manera predeterminada en MySQL 5.6 y superior, permite que las tablas se creen en espacios de tabla de archivo por tabla, con un archivo de datos separado para cada tabla. Al habilitar la opción innodb_file_per_table, se ponen a disposición otras funciones de MySQL, como la compresión de tablas y los espacios de tabla transportables.

Archivo asociado es .idbd

InnoDB introdujo espacios de tabla generales en MySQL 5.7.6. Los espacios de tabla generales son espacios de tabla compartidos creados con la sintaxis de CREATE TABLESPACE. Se pueden crear fuera del directorio de datos de MySQL, pueden contener varias tablas y admiten tablas de todos los formatos de fila.


los clientes sql solo usarán objetos sql y no se preocuparán de dónde almacena físicamente esa información el servidor de la base de datos.

Por eso es necesario el concepto de tablespace. Los objetos sql, como los datos de tabla, entran en un tablespace desde el punto de vista del cliente sql.

Los administradores del servidor db ahora tienen la libertad de colocar físicamente el espacio de tabla donde quieren que vaya físicamente, los programas de cliente de SQL todavía funcionan.


MySQL Innodb TableSpace es una ubicación donde los datos residen en el disco llamado directorio de datos (por defecto, "espacio de tablas del sistema" ). Ejemplo:

"/ var / lib / mysql"

Desde la versión 5.6.6 de MySQL, un usuario puede crear y especificar el espacio de tablas que desea almacenar los datos, lo que permite el rendimiento de la manipulación de datos y el proceso de recuperación. La función de archivo por tabla de InnoDB ofrece a cada tabla tener archivos de datos e índices .ibd separados que representan un espacio de tabla general individual. Para que cada tabla en una base de datos pueda apuntar varias ubicaciones de directorios de datos .

Ex:

/home/{user}/test/data/{dbName}/{tableName}.ibd

/home/{user}/work/data/{dbName}/{tableName}.ibd

Para obtener más información sobre el espacio de tabla de archivo por tabla, consulte esta documentación de mysql .