Mysql Motores de bases de datos

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introducción

  • Lo primero que tendremos que preguntarnos leyendo el título de este punto es ¿ qué es un motor de bases de datos ?
  • Resumiendo podemos decir que un motor determina la forma física en cómo los datos son guardados en disco y además cada motor ofrece una serie de ventajas relativas a los tipos de datos que pueden guardar, tipos de índices, velocidad de acceso y soporte de diferentes características como puede ser el uso de transacciones, integridad referencial,...


  • En la imagen siguiente podemos ver en la capa más cercana al almacenamiento físico de los datos los diferentes motores (Imagen obtenida de Universidad De Gerona - Administracion De Bases De Datos Mysql 5):
Mysql motores 1.jpg
  • MYISAM Storage Engine
  • MEMORY Storage Engine
  • CSV Storage Engine
  • ARCHIVE Storage Engine
  • BLACKHOLE Storage Engine
  • MERGE Storage Engine
  • FEDERATED Storage Engine
  • EXAMPLE Storage Engine
  • INNODB Storage Engine
  • NDB Storage Engine
  • A partir de la versión Mysql 5.7 el motor por defecto cuando se crean las tablas es INNODB.
  • Además la base de datos Mysql deja de ser MyIsam y pasa a ser Innodb.


  • Más información:


Órdenes SQL relacionadas con el manejo de los motores

  • Para ver cuales son los motores que puede soportar el servidor Mysql (algunos pueden estar desactivados o no compilados), disponemos de la orden SQL: SHOW ENGINES;.
Podemos ver cual es la salida de ejecutar esta orden:
Mysql motores 2.jpg
En esta primera gráfica ya podemos advertir como el motor INNODB posee una serie de funcionalidades que no tienen los demás. Las analizaremos cuando comentemos dicho motor.



  • Para crear una tabla con un motor determinado tendremos que ejecutar la orden SQL CREATE TABLE de la forma: CREATE TABLE nombre_tabla (col1 tipo1, col2 tipo2,....coln tipon) ENGINE=MYISAM;
Por defecto, a partir de la versión 5.7 el motor por defecto es INNODB. Anteriormente era MYISAM.
  • Para modificar el motor de una tabla tenemos que ejecutar la orden SQL ALTER TABLE: ALTER TABLE nombre_tabla ENGINE = MYISAM;
  • Para ver cual es el motor de una tabla tenemos que ejecutar la orden SQL SHOW TABLE STATUS: SHOW TABLE STATUS WHERE Name = 'nombre_tabla';

Variables del sistema relacionadas con los motores de bases de datos


Características a tener en cuenta para elegir el motor adecuado

  • Cada uno de los motores tienen características, algunas de ellas son comunes y otras son específicas de cada tipo de motor.
  • Dependiendo de la base de datos a guardar, los tipos de datos, seguridad,.... deberíamos elegir el motor que mejor se adapte a nuestras necesidades.
  • Como norma general, la mayor parte de las ocasiones, elegiremos el motor INNODB (motor por defecto a partir de la versión 5.7), pero de todas formas, indicará alguno de los factores principales (no todos) que podríamos tener en cuenta:
  • Tamaño máximo de la tabla: Dependerá de los tipos de registros y del número de ellos.
  • Capacidad de almacenamiento en filas (registros), es decir, ¿ cuántas filas es capaz de guardar una tabla ?
  • Número de índices que podemos guardar en una tabla. Veremos en profundidad el uso de índices en la Unidad 5. Por ahora señalaremos que un índice se aplica sobre una o varias columnas de una tabla, y esto lleva consigo que podamos acceder directamente al lugar 'físico' donde se encuentra la fila en base al valor ordenado de la columna/s que conforman el índice.
  • Tipos de datos sobre los que podemos crear índices.
  • Tipo de bloqueo (más información en este enlace):
  • Un bloqueo de tabla significa que nadie puede acceder a la tabla (puede ser bloque de lectura, de escritura o ambos) mientras dure el bloque.
  • Un bloqueo de fila, significa que nadie puede acceder a la fila (puede ser bloque de lectura, de escritura o ambos) mientras dure el bloque.




Motor MyISAM

  • Características:
Mysql motores 4.jpg
Imagen obtenida de http://dev.mysql.com


  • Físicamente cada tabla se guarda en 3 ficheros:
  • nombre_tabla.frm: Guarda la definición del formato de la tabla.
  • nombre_tabla.myd (MyData): Guarda los datos de la tabla.
  • nombre_tabla.myi (MyIndex): Guarda los índices que tenga creada la tabla.


  • Orden SQL para crear una tabla con este motor:
1 CREATE TABLE nombre_tabla (nombre_col tipo_dato) ENGINE = MYISAM;



  • Características principales:


  • Tamaño máximo de la tabla: 256TB.
  • Capacidad de almacenamiento en filas (registros): (2^32)^2 (1.844E+19)
  • Número máximo de índices que podemos guardar en una tabla: 64
  • Número máximo de columnas por índice: 16
  • Tipos de datos sobre los que podemos crear índices: BLOB, TEXT, y columnas con valor NULL.
  • Tipo de bloqueo:
  • Un bloqueo de tabla significa que nadie puede acceder a la tabla (puede ser bloque de lectura, de escritura o ambos) mientras dure el bloque.
  • Un bloqueo de fila, significa que nadie puede acceder a la fila (puede ser bloque de lectura, de escritura o ambos) mientras dure el bloque.

Motor InnoDB

  • Características:
Mysql motores 3.jpg
Imagen obtenida de http://dev.mysql.com





-- Ángel D. Fernández González -- (2017).