“Conocimiento Programación>Programación PHP /MySQL

¿MySQL almacena cada tabla en un archivo separado?

2011/2/21
No, MySQL no necesariamente almacena cada tabla en un archivo separado. La forma en que MySQL almacena las tablas depende del motor de almacenamiento utilizado.

Aquí hay un desglose de cómo los diferentes motores de almacenamiento manejan el almacenamiento de la tabla:

1. Innodb (más común:el valor predeterminado a partir de MySQL 5.5)

* `innodb_file_per_table` Configuración: Esta configuración determina cómo innoDB almacena datos e índices de tabla.

* `innodb_file_per_table =on` (recomendado): Cada tabla tiene su propio archivo `.ibd` para datos e índices. Los metadatos (definición de la tabla) todavía se almacenan en el archivo compartido `ibdata1`. Esta es la configuración preferida porque:

* Hace que `Drop Table`, 'Truncate Table` y' Optimice la tabla 'operaciones más rápido.

* Permite una mayor recuperación de tablas individuales.

* Reduce el riesgo de corrupción que afecta a múltiples tablas.

* Reclama espacio cuando se cae una mesa (a diferencia del enfoque de espacio de tabla compartido).

* `innodb_file_per_table =off` (no recomendado): Los datos e índices para todas las tablas innoDB se almacenan en un espacio de tabla compartido (típicamente `ibdata1`). Los metadatos (definición de la tabla) todavía se almacenan en el archivo compartido `ibdata1`. Esta configuración se desaconseja muy a menos que tenga una razón muy específica y convincente para usarla. Es más difícil manejar, recuperarse y encoger el espacio de tabla.

* `.frm` archivos: InnoDB también crea un archivo `Frm` para cada tabla. Este archivo contiene los metadatos de la tabla (definición de la tabla). Este es un artefacto histórico y los archivos `.FRM` se están volviendo menos importantes a medida que los metadatos se trasladan al diccionario de datos administrado directamente por el servidor.

2. Myisam (motor más antiguo, menos común ahora):

* Myisam almacena cada tabla en tres archivos separados:

* `.frm`:definición de tabla (como innodb).

* `.Myd`:archivo de datos (contiene los datos de la tabla).

* `.Myi`:archivo de índice (contiene los índices de la tabla).

3. Otros motores de almacenamiento:

* Otros motores de almacenamiento (por ejemplo, memoria, archivo, CSV) tienen sus propios mecanismos de almacenamiento. Por ejemplo, el motor 'Memory` almacena tablas en la memoria, no en el disco. El motor `CSV` almacena datos en archivos CSV.

Consideraciones importantes:

* Ubicación de archivos: Los archivos asociados con una tabla (por ejemplo, `.ibd`,` .Frm`, `.myd`,` .myi`) se almacenan típicamente en un directorio que corresponde al nombre de la base de datos. La ubicación de estos directorios está determinada por la variable de configuración `DataDir` en la configuración de su servidor MySQL (generalmente` my.cnf` o `my.ini`).

* Espacio de tabla compartido (IBDATA1): Si está utilizando `innoDB_File_per_Table =Off` con innodb, * todas * las tablas innoDB comparten el archivo` ibdata1` (y posiblemente otros archivos `ibdata` si crece demasiado grande). Esto puede conducir a la fragmentación y dificultar la recuperación del espacio en el disco.

* Almacenamiento de metadatos: Aunque los datos primarios a menudo se separan en diferentes archivos (especialmente con `innodb_file_per_table =on`), las definiciones de la tabla * * (metadatos) se almacenan en un diccionario de datos administrado por el servidor. Los archivos `.FRM` se usan para formatos más antiguos y ahora son menos críticos.

Cómo verificar `innodb_file_per_table`:

Puede verificar la configuración actual de `innodb_file_per_table` usando la siguiente consulta SQL:

`` `SQL

Mostrar variables como 'innodb_file_per_table';

`` `` ``

En resumen:

Mientras que los motores de almacenamiento más antiguos como Myisam * do * almacenan datos de tabla, índices y definiciones en archivos separados, innoDB (el motor más común) con `innodb_file_per_table =on` almacena datos e índices en un archivo `ibd` por tabla * (más el archivo` .frm` más antiguo para metadatos). Usando `innodb_file_per_table =off` almacena todos los datos e índices de tabla innodb en el archivo compartido` ibdata1`.

Programación PHP /MySQL
Cómo publicar una entrada de texto Valor Caja en PHP
Cómo cambiar los permisos de archivos mediante PHP
Cómo enviar un archivo de imagen PHP
Cómo desactivar Mostrar errores en PHP
Cómo mostrar datos desde MySQL en PHP
Cómo comprobar los números secuenciales en PHP
Cómo insertar INT en MySQL
Cómo escribir un comando SQL Delete Informix
Conocimiento de la computadora © http://www.ordenador.online