InnoDB

InnoDB
Datos básicos

desarrollador Heikki Tuuri, Innobase Oy Inc. ( Oracle Corporation)
sistema operativo Unix , Linux , Windows , OS X , i5 / OS , OpenVMS
lenguaje de programación C.
categoría Subsistema de almacenamiento
Licencia Sistema de licencia dual ( Licencia Pública General Comercial y GNU )
Se habla alemán No
innodb.com

InnoDB es un subsistema de almacenamiento gratuito para el sistema de gestión de bases de datos MySQL . Su principal ventaja sobre otros subsistemas de almacenamiento para MySQL es que la seguridad de las transacciones y la integridad referencial están garantizadas mediante claves externas .

Innobase Oy, el fabricante de InnoDB, fue adquirido por Oracle Systems en octubre de 2005 .

El software tiene doble licencia : para aplicaciones de código abierto , está bajo la GPL ; también está disponible una licencia propietaria para aplicaciones que no son de código abierto.

caracteristicas

Con MySQL versión 5.0, InnoDB se instala como el subsistema de almacenamiento estándar cuando se instala en Windows . Al instalar bajo Unix , MyISAM se instala como el subsistema de almacenamiento estándar. Desde MySQL 5.5, InnoDB ha sido el subsistema de almacenamiento estándar entre todos los sistemas.

InnoDB admite transacciones, es decir:

  • Las operaciones de escritura realizadas en la transacción se pueden revocar ( deshacer ) abortando la transacción .
  • Los accesos de lectura repetidos dentro de una transacción no se ven afectados por los accesos de escritura de otras transacciones ( aislamiento de ACID ).
  • Los accesos de escritura en una transacción dan como resultado un bloqueo de escritura en los registros de datos afectados para todas las demás transacciones ( bloqueo de nivel de fila ).

La opción SQLENGINE se puede utilizar para crear explícitamente una tabla con InnoDB como subsistema de almacenamiento :

CREATE TABLE t (i INT) ENGINE = InnoDB;

(Nota: Las versiones anteriores de MySQL usan la palabra clave en TYPElugar de ENGINE(Ejemplo :) TYPE = INNODB. MySQL 5.0 y 5.1 admiten esta sintaxis compatible con versiones anteriores, pero se ENGINErecomienda el uso de , porque desde MySQL 5.5 solo se ENGINEadmite la palabra clave ).

Espacio de mesa

InnoDB guarda la estructura de la tabla en archivos frm, datos de usuario e índices en un espacio de tabla. El espacio de tabla se establece antes de empezar a trabajar con el servidor de base de datos y puede abarcar uno o más archivos. Los archivos del espacio de tablas se pueden distribuir a diferentes directorios. Al igual que en una partición de disco duro , la configuración del espacio de tabla no se puede ajustar posteriormente sin riesgo de pérdida de datos. Si se cambia la configuración del espacio de tabla, la base de datos completa se restaura a partir de una copia de seguridad.

Con la opción innodb_file_per_table, se crea un espacio de tabla separado para cada tabla, i. H. MySQL guarda los datos del usuario y los índices en el archivo t.ibd junto con el archivo de estructura t.frm en el directorio de la base de datos. Los datos de la tabla se pueden extraer posteriormente del espacio de tablas mediante la operación nula:

ALTER TABLE t ENGINE=InnoDB;

Liberación de memoria

Después de eliminar tablas InnoDB, se libera la memoria dentro del espacio de tabla. Sin embargo, este recurso compartido no se transmite al sistema operativo, por lo que el tamaño de los archivos de espacio de tabla no se reduce. La laboriosa liberación de espacio en el disco duro se realiza eliminando todo el espacio de tabla y restaurando la base de datos a partir de una copia de seguridad.

Una alternativa es el espacio de tabla por tabla, en el que se crea un archivo de espacio de tabla separado para cada tabla y se elimina nuevamente después de que se haya eliminado la tabla. La desventaja de este modo es que parte de la gestión de datos de MySQL se traslada al sistema operativo que este pueda tener. A veces se hace de forma menos eficiente. Antes de crear y llenar una mesa grande, el espacio de mesa por mesa puede activarse y desactivarse de nuevo en tiempo de ejecución para luego liberar espacio en el disco duro para una mesa individual.

SHOW VARIABLES LIKE 'innodb_file_per_table'; -- aktuelle Einstellung anzeigen
SET @@global.innodb_file_per_table = TRUE; -- Per-Table-Tablespace aktivieren
CREATE TABLE a (...) ENGINE=InnoDB; -- Eine Tabelle im Per-Table-Tablespace erstellen
ALTER TABLE t ENGINE=InnoDB; -- Eine Tabelle nachträglich in den Per-Table-Tablespace verschieben
SET @@global.innodb_file_per_table = FALSE; -- Per-Table-Tablespace deaktivieren
CREATE TABLE b (...) ENGINE=InnoDB; -- Eine Tabelle im Tablespace erstellen

DROP TABLE a; -- Tabelle löschen und Festplattenspeicher freigeben
DROP TABLE b; -- Tabelle löschen, Festplattenspeicher wird nicht freigegeben

literatura

enlaces web

Evidencia individual

  1. Oracle anuncia la adquisición de Innobase, un fabricante de software de código abierto . Oracle . Consultado el 16 de enero de 2015.
  2. Licencias de MySQL e InnoDB . InnoDB.com. Consultado el 9 de julio de 2010.
  3. http://www.oracle.com/us/corporate/press/195726
  4. ver p. Ej. B. Pachev: Comprensión de los componentes internos de MySQL, Capítulo 10: Motores de almacenamiento
  5. enlace del archivo ( recuerdo de la original, del 29 de enero de 2012 en el Archivo de Internet ) Información: El archivo de enlace se inserta de forma automática y sin embargo no ha sido comprobado. Verifique el enlace original y de archivo de acuerdo con las instrucciones y luego elimine este aviso.  @ 1@ 2Plantilla: Webachiv / IABot / dev.mysql.com
  6. http://dev.mysql.com/doc/refman/5.5/en/create-table.html
  7. Liberar la memoria InnoDB automáticamente . 15 de mayo de 2013. Consultado el 10 de junio de 2013.