Los ficheros de datos definidos en el fichero de configuración
forman el espacio de tablas de InnoDB
. Los
ficheros simplemente son concatenados para formar el espacio de
tablas. No se utiliza striping (grabación de datos a través de
varios discos en simultáneo). Actualmente no se puede definir
en qué parte del espacio de tablas se ubicarán las tablas. Sin
embargo, en un espacio de tablas nuevo,
InnoDB
asigna el espacio comenzando por el
primer fichero de datos.
El espacio de tablas consiste en páginas de base de datos con
un tamaño por defecto de 16KB. Las páginas se agrupan en
áreas de 64 páginas consecutivas. Los “ficheros”
dentro de un espacio de tablas se llaman
segmentos en InnoDB
.
El término “segmento de cancelación” (rollback
segment) es un tanto confuso porque en realidad contiene varios
segmentos del espacio de tablas.
Por cada índice de InnoDB
se asignan dos
segmentos. Uno es para los nodos que no son hojas del B-tree, el
otro es para los nodos hoja. La idea es mejorar la
secuencialidad de los nodos hoja, los cuales contienen los
datos.
Cuando un segmento crece dentro del espacio de tablas,
InnoDB
ubica las primeras 32 páginas
individualmente. Luego de ello, comienza a ubicar áreas enteras
en el segmento. InnoDB
puede adicionar a un
segmento grande hasta 4 áreas de páginas cada vez, para
asegurar una adecuada secuencialidad de los datos.
Algunas páginas en el espacio de tablas contienen bitmaps de
otras páginas, por lo tanto unas pocas áreas en un espacio de
tablas InnoDB
no puede asignarse a segmentos
como un todo, sino solamente como páginas individuales.
Cuando se consulta el espacio libre disponible en el espacio de
tablas mediante una sentencia SHOW TABLE
STATUS
, InnoDB
informa las áreas
que están totalmente libres en el espacio de tablas.
InnoDB
siempre reserva algunas áreas para
depuración y otros propósitos internos; estas áreas
reservadas no se cuentan en el espacio libre.
Cuando se eliminan datos de una tabla, InnoDB
reduce los correspondientes índices B-tree. Depende del patrón
seguido por las eliminaciones, si se liberan páginas
individuales o áreas del espacio de tablas, de forma que el
espacio desocupado quede disponible para otros usuarios.
Eliminar una tabla, o todas las filas que contiene, seguramente
servirá para liberar el espacio, pero no hay que olvidar que
las filas eliminadas solamente desaparecen físicamente cuando
dejan de ser necesarias para cancelar transacciones o de
integrar lecturas consistentes.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.