Si un sitio web grande va muy lento, a menudo se debe a que su te­c­no­lo­gía de bases de datos no está op­ti­mi­za­da. El orden es la mitad de la batalla ―esto se aplica tanto al mundo físico como al digital. Si los registros de datos crecen co­n­s­ta­n­te­me­n­te, se necesita un sistema de gestión de bases de datos o SGBD adecuado. Uno de estos SGBD es MySQL, que permite procesar, almacenar y preservar grandes ca­n­ti­da­des de datos.

En el al­ma­ce­na­mie­n­to de los datos en MySQL, InnoDB desempeña un papel im­po­r­ta­n­te. InnoDB es un su­b­si­s­te­ma de al­ma­ce­na­mie­n­to que ha pre­va­le­ci­do sobre otros motores de al­ma­ce­na­mie­n­to en los últimos años, sobre todo gracias a su mayor re­n­di­mie­n­to y fia­bi­li­dad. Aquí te contamos qué es InnoDB, qué de­s­ve­n­ta­jas tiene y en qué se distingue del su­b­si­s­te­ma de memoria MyISAM.

Compute Engine
La solución IaaS ideal para tus cargas de trabajo
  • vCPU económico con núcleos dedicados
  • Flexible y sin periodo mínimo co­n­tra­c­tual
  • Soporte experto 24/7

¿En qué consiste InnoDB?

InnoDB ha pasado de ser un su­b­si­s­te­ma de al­ma­ce­na­mie­n­to al motor de al­ma­ce­na­mie­n­to de propósito general para MySQL. Su gran fia­bi­li­dad, incluso a muy alto re­n­di­mie­n­to, ha llevado a MySQL a hacer de InnoDB el motor de al­ma­ce­na­mie­n­to pre­de­te­r­mi­na­do en las versiones 5.6 y po­s­te­rio­res.

Nota

MySQL es una base de datos de código abierto que permite el uso de di­fe­re­n­tes motores de al­ma­ce­na­mie­n­to. Esto ofrece mucha fle­xi­bi­li­dad a las bases de datos para el al­ma­ce­na­mie­n­to web. Además de InnoDB y su pre­de­ce­sor oficial, MyISAM, existen otros motores, como Be­r­ke­le­y­DB, CSV, NDB o Federated Engine.

Como sistema de gestión de bases de datos, MySQL garantiza que los datos se puedan almacenar, indexar y consultar en una tabla. Si, por ejemplo, se debe leer un gran número de pequeñas ca­n­ti­da­des de datos, como ocurre con los sitios web o las apli­ca­cio­nes, o si es necesario procesar los datos de forma segura para realizar tra­n­sac­cio­nes, este programa ofrece la solución adecuada. InnoDB, que pro­po­r­cio­na a MySQL el motor de al­ma­ce­na­mie­n­to necesario, se comporta como un módulo que se puede integrar en el software de forma flexible. Sin embargo, MySQL determina siempre cómo se almacenan los datos de una base de datos.

Nota

Las bases de datos consisten en tablas a las que se asigna un motor de al­ma­ce­na­mie­n­to concreto, como InnoDB, en el momento de crearlas.

La mayoría de los motores almacenan los datos en soportes de datos o los guardan en la memoria principal para un acceso rápido. InnoDB permite que las tra­n­sac­cio­nes de datos se realicen de forma aislada entre sí: solo cuando una tra­n­sac­ción se completa, se escribe en el medio de al­ma­ce­na­mie­n­to co­rre­s­po­n­die­n­te. Así no se producen accesos in­co­m­ple­tos a bases de datos creadas.

Nota

Las tra­n­sac­cio­nes son paquetes de datos que consisten en varias ope­ra­cio­nes que no se pueden separar. Si no se puede ejecutar una operación, toda la tra­n­sac­ción se cancela. Para so­lu­cio­nar­lo, se deben deshacer todas las ope­ra­cio­nes an­te­rio­res, no solo la errónea. Este proceso lleva más tiempo que una operación simple, pero solo así se puede ga­ra­n­ti­zar la co­he­re­n­cia de la base de datos.

¿Por qué utilizar InnoDB en MySQL?

Cada tabla InnoDB organiza los datos en el soporte de datos. Esto ralentiza un poco el acceso, pero mejora la seguridad, ya que cada tabla está op­ti­mi­za­da con una clave primaria. Se­le­c­cio­nar datos es re­la­ti­va­me­n­te más rápido, pero añadirlos y ac­tua­li­zar­los es más lento. Por esto, InnoDB es un motor de al­ma­ce­na­mie­n­to para MySQL es­pe­cia­l­me­n­te adecuado para grandes bases de datos, en pa­r­ti­cu­lar, cuando muchos datos están en­tre­la­za­dos.

Como ya se ha me­n­cio­na­do, los datos de cada tra­n­sac­ción en InnoDB están en­tre­la­za­dos. Al borrar algún dato, InnoDB elimina también au­to­má­ti­ca­me­n­te todos los datos re­fe­re­n­cia­dos. Esto hace mucho más fácil para el usuario mantener la in­te­gri­dad re­fe­re­n­cial de la base de datos. Sin embargo, la in­te­gri­dad re­fe­re­n­cial se debe definir de antemano, porque, de lo contrario, no se mantiene au­to­má­ti­ca­me­n­te. De la misma manera, se puede bloquear el acceso de escritura a los registros de datos.

La es­tru­c­tu­ra tabular de InnoDB se guarda en archivos FRM, datos de uso e índices, en un espacio de tablas asociado a la base de datos que puede abarcar uno o más archivos. La in­te­gri­dad re­fe­re­n­cial también se aplica aquí: la co­n­fi­gu­ra­ción del espacio de tablas se puede di­s­tri­buir en di­fe­re­n­tes di­re­c­to­rios, pero esto se debe es­ta­ble­cer al principio del trabajo y no se puede cambiar. Trabajar con una tabla InnoDB es en este aspecto como trabajar con una partición en el disco duro, donde, si se realizan cambios po­s­te­rio­res, se pueden perder datos.

Pro­ba­ble­me­n­te, el ejemplo más im­po­r­ta­n­te de uso de InnoDB sea mediawiki, el software sobre el que, entre otros, se basa el sitio web Wikipedia.

¿Cuáles son las ventajas e in­co­n­ve­nie­n­tes de combinar MySQL e InnoDB?

Bá­si­ca­me­n­te, InnoDB es más joven y moderno que otros motores de al­ma­ce­na­mie­n­to de MySQL. Asimismo, es más complejo y requiere un entorno de base de datos mucho más potente. Sin embargo, a medida que las propias apli­ca­cio­nes web ganan en co­m­ple­ji­dad, los ope­ra­do­res dependen cada vez más de las ca­pa­ci­da­des (tra­n­sac­cio­nes, claves externas) que MySQL puede pro­po­r­cio­nar gracias a InnoDB: todos los procesos de una página web se basan en la lectura del contenido de bases de datos. InnoDB puede ra­le­n­ti­zar el tiempo de respuesta, por ejemplo, si se ac­tua­li­zan pu­bli­ca­cio­nes o se crean nuevos artículos. No obstante, la parte decisiva, la entrega de nuevos co­n­te­ni­dos al usuario, es mucho más rápida.

Los in­co­n­ve­nie­n­tes de InnoDB se compensan con sus ventajas, al menos en los sitios web modernos comunes. En el caso de las tiendas online, sin embargo, sus li­mi­ta­cio­nes son más evidentes: en un sistema de reservas, por ejemplo, se producen muchos accesos de escritura, por lo que el sistema de claves de solo lectura no es pa­r­ti­cu­la­r­me­n­te útil. En este contexto, se re­co­mie­n­da utilizar tablas que gestionen mejor los accesos de escritura, como, por ejemplo, MyISAM.

El aspecto más im­po­r­ta­n­te al usar MySQL con InnoDB es que un error al realizar cambios en las bases de datos puede hacer que todo el sitio web quede inu­ti­li­za­ble. Por ello, se debe hacer una copia de seguridad de la base de datos antes de cada cambio. Para estos casos, InnoDB utiliza un registro de tra­n­sac­cio­nes que permite el re­s­ta­ble­ci­mie­n­to au­to­má­ti­co en caso de error.

¿En qué se di­fe­re­n­cian InnoDB y MyISAM?

Desde su versión 5, MySQL es co­m­pa­ti­ble con más de diez motores de al­ma­ce­na­mie­n­to di­fe­re­n­tes. El más conocido es MyISAM. Este motor almacena los datos de cada tabla en dos archivos, uno para el archivo y otro, para el índice. ISAM re­pre­se­n­ta las siglas en inglés de Indexed Se­que­n­tial Access Method (método de acceso se­cue­n­cial indexado), por lo que no permite que varios usuarios o apli­ca­cio­nes escriban a la vez en la misma tabla. El al­ma­ce­na­mie­n­to se­cue­n­cial solo permite el acceso de escritura por una apli­ca­ción a la vez. Sin embargo, permite la lectura si­mu­l­tá­nea por parte de varios usuarios. Si muchos usuarios deben leer varios paquetes de datos pequeños a la vez, MyISAM es la elección más ventajosa.

InnoDB cumple con la norma ACID (atomicity, co­n­si­s­te­n­cy, isolation, du­ra­bi­li­ty; en español, ato­mi­ci­dad, co­n­si­s­te­n­cia, ai­s­la­mie­n­to, du­ra­bi­li­dad). Todas las tra­n­sac­cio­nes están aisladas entre ellas, pero el número de apli­ca­cio­nes que pueden escribir datos en una tabla si­mu­l­tá­nea­me­n­te es ilimitado. InnoDB es el candidato ideal para las consultas de datos (función SELECT), pero MyISAM es algo más rápido para los accesos de escritura a las bases de datos (funciones INSERT y UPDATE). Sin embargo, la relativa lentitud de InnoDB queda co­m­pe­n­sa­da con creces por el registro de tra­n­sac­cio­nes. MyISAM no ofrece re­s­ta­ble­ci­mie­n­to au­to­má­ti­co en caso de errores, por lo que siempre se debe crear una copia de seguridad antes de hacer cambios.

En resumen

El motor de al­ma­ce­na­mie­n­to InnoDB no siempre es el mejor sustituto de su pre­de­ce­sor, MyISAM. En cuanto los proyectos o la base de datos crecen en co­m­ple­ji­dad, InnoDB pasa a ser la solución apropiada para MySQL. Para bases de datos o apli­ca­cio­nes más pequeñas, MyISAM es mucho más potente. Si se usan co­rre­c­ta­me­n­te, no hay cuestión sobre cuál de los motores de al­ma­ce­na­mie­n­to se debe usar. Si es necesario, en la misma base de datos se pueden usar ambos módulos, uno junto al otro.

Ir al menú principal