← Catálogo · Antes: Crear una tabla
Semana 3 · Versión avanzadaCrear una tabla por dentro: el motor y los archivos
1. El servidor no guarda datos: los guarda un motor
Cuando ejecutás un CREATE TABLE, trabajan dos capas. La capa SQL del servidor entiende la sentencia, revisa la sintaxis y las reglas y anota la definición en el diccionario de datos. Pero no escribe ningún dato: esa tarea es de un motor de almacenamiento, el que indica ENGINE=. Cada motor guarda las tablas a su manera, y eso se ve en el disco.
2. Seguí la tabla hasta el disco
Elegí una tabla y una configuración, y avanzá paso a paso. Fijate qué hace el motor y qué archivos aparecen en la carpeta de la base. Al final, information_schema confirma lo que viste en el disco.
Crear una tabla por dentro: el motor y los archivos
Qué se simplifica
Es una simulación con datos de ejemplo: no se conecta a MySQL ni ejecuta SQL real. Los archivos, sus tamaños y las cifras de information_schema son los que dejó MySQL 8.0.30 al crear estas mismas tablas en una instancia temporal. En MySQL 5.7 y MariaDB también aparece un archivo .frm por tabla; el número del .sdi cambia en cada servidor.
3. Una tabla, uno o más archivos
Estos son los archivos reales que dejó MySQL 8.0 al crear socios vacía.
| Configuración | Archivos en la carpeta de la base | Dónde están las filas y los índices |
|---|---|---|
| InnoDB, un archivo por tabla (lo normal) | socios.ibd | Todo junto, en el mismo archivo |
InnoDB, todo en ibdata1 | ninguno | Dentro de ibdata1, el espacio común del sistema |
| MyISAM | socios.MYD, socios.MYI y un .sdi | Filas en .MYD, índices en .MYI |
4. Qué significa cada cosa
- Espacio de tablas (tablespace): el contenedor donde InnoDB guarda las páginas de una tabla. Con
innodb_file_per_tableactivado, cada tabla tiene el suyo: un archivo.ibd. - Página: la unidad en que InnoDB lee y escribe: 16 KB. Una tabla vacía ya ocupa varias; por eso
socios.ibdpesa 128 KB sin tener ninguna fila. - Índice agrupado: en InnoDB la tabla se organiza alrededor de la clave primaria: las filas viven dentro de ese índice. Por eso conviene que la clave primaria sea corta y estable.
- MyISAM: el motor histórico de MySQL. Guarda las filas y los índices por separado, y no tiene transacciones ni claves foráneas. Lo vemos en la semana 9.
.frm con su definición, y en MySQL 8 la definición está en el diccionario de datos (y el .sdi es una copia). Los tamaños dependen del servidor.5. Autoevaluación
- ¿Qué parte del servidor crea los archivos de la tabla: la capa SQL o el motor? ¿Por qué?
- Creás una tabla InnoDB vacía y su
.ibdpesa 128 KB. ¿Cómo es posible si no tiene filas? - ¿Cuántos archivos tiene una tabla MyISAM y qué guarda cada uno?
- Con
innodb_file_per_tableapagado, ¿qué aparece en la carpeta de la base al crear una tabla?
Ver las respuestas
- El motor. La capa SQL entiende y valida la sentencia, pero guardar datos es responsabilidad del motor que indica
ENGINE=. - InnoDB reserva páginas de 16 KB desde el principio (en
socios, 8 páginas: 128 KB) para la estructura de la tabla y sus índices; no depende de la cantidad de filas. .MYD(las filas) y.MYI(los índices), más un.sdicon la definición en MySQL 8.- Nada: la tabla se guarda dentro de
ibdata1, que ya existía.
Para insertar en el aula
Copiá este código y pegalo en el editor del aula, en la vista de código fuente (HTML). Usa solo atributos, sin estilos, porque el editor del aula suele quitarlos. Incluye allowfullscreen para que el botón de pantalla completa funcione dentro del aula.