Bases de datos – 6. Motores MySQL

Bienvenidos una semana más queridos rooters. Hoy voy a continuar una de mis sagas favoritas. Si bien hasta ahora os hemos estado avasallando con miles de líneas de teoría, va siendo hora de entrar en faena y ver ejemplos ja! Not today. Os voy a presentar los dos motores MySQL de almacenamiento más importante.

Introducción

Una base de datos relacional desde un punto de vista lógico usa tablas para guardar los datos. Internamente un mecanismo de almacenamiento (storage engine) es el encargado de almacenar en último término los datos de las tablas en dispositivos físicos, para que estos tengan durabilidad. El mecanismo es totalmente clave a la hora de evaluar la rapidez y las funcionalidades que puede ofrecer el SGBD. MySQL tiene la opción de incluir dinámicamente -desde MySQL 5.1- los distintos mecanismos para soportar el almacenamiento de las tablas. La mayoría de estos mecanismos se pueden instalar en desarrollos derivados de MySQL como MariaDB,

MyISAM e InnoDB son sin duda los motores de almacenamiento más populares en MySql, pero de acuerdo a cuál elijamos para nuestra aplicación dependerá el éxito y rendimiento de la misma ya que ambos motores fueron creados para fines distintos. No podemos decir que uno es mejor que otro. Más bien debemos analizar las características de nuestro proyecto y en base a estas elegir el mejor motor de almacenamiento para nuestras tablas.

De entrada, la característica más notable y por la cual nos podemos guiar sin pensarlo dos veces es la siguiente:
  • MyISAM si lo que necesitamos y utilizamos más son consultas SELECT (selección de datos) a la base de datos.
  • InnoDB si necesitamos transacciones, claves foráneas y bloqueos.

Motores MySQL: MyISAM vs InnoDB

A la hora de abarcar un proyecto web con comunicaciones con bases de datos, es muy importante conocer las capacidades del servidor (alojamiento) que va a gestionar nuestro desarrollo, no solo en capacidad de almacenamiento sino también en cuanto a versión de software y base de datos que van a manejarlo. La correcta elección del motor de almacenamiento definirá cómo se gestionarán los recursos en cuanto a velocidad, consumo de esos recursos y calidad de servicio.

Cada proyecto tiene su casuística, a la que debemos prestar atención, conociendo el número de usuarios que accederán o pueden acceder simultáneamente a realizar altas, bajas, etc., o bien si tenemos miles de accesos solamente a consultas.

Características de MyISAM:

  • Mayor velocidad en general a la hora de recuperar datos (SELECT).
  • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
  • Ausencia de características de atomicidad. No tiene que hacer comprobaciones de la integridad referencial ni bloquear las tablas para realizar las operaciones; esto nos lleva como los anteriores puntos a una mayor velocidad.
  • Los archivos de los datos y de los índices pueden estar localizados en diferentes dispositivos físicos. Es decir, podemos asignar discos duros para ciertas tablas y con esto ganamos mayor velocidad.
  • Las columnas tipo Text y Blob pueden ser indexadas.
  • En las columnas indexadas pueden contener un valor NULL

Características de InnoDB:

  • Motor de almacenamiento transaccional (ACID).
  • Sentencias especiales commit (confirmación) y rollback (cancelación) para recuperación de fallos.
  • InnoDB realiza bloqueos a nivel de fila y también proporciona funciones de lectura consistente sin bloqueo en sentencias SELECT.
  • Incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos.
  • No se necesita un bloqueo escalado en InnoDB porque los bloqueos a nivel de fila ocupan muy poco espacio.
  • InnoDB soporta restricciones FOREIGN KEY.
  • Si predominan los INSERT y UPDATE, se notará un aumento de rendimiento con respecto a MyISAM.

A mí personalmente me gusta más InnoDB. La razón más importante es la de diseñar bases de datos relacionales. Además del uso habitual de transacciones y de claves foráneas.

 

En el siguiente rootie aprenderemos a crear una base de datos relacional simple. También empezaremos a manejar algunos datos haciendo una introducción a las consultas (queries).

¡Un saludo y que paséis buena semana!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *