Está en la página 1de 20

Administrador de Bases de Datos

MOTORES DE ALMACENAMIENTO
EN MYSQL
¿Qué son los motores de
almacenamiento?
• Es una característica única de MySQL
• Nos permite seleccionar el tipo de almacenamiento
interno de cada tabla, en base al que mejor se
adecúe a una situación particular.
• Dicha selección, la hace el desarrollador a nivel de
tabla, y no afecta a la manera en que el servidor
interactúa con el cliente (los comandos SQL serán
los mismos, sea cual sea el motor de
almacenamiento escogido).
• El cliente no necesita saber como se guardan los
datos.
Funcionamiento
Arquitectura de MySQL
Clasificación de tablas
 Transaccionales
 Más seguras incluso ante caidas del servidor.
 Recuperación más fácil de los datos.
 Si falla una actualización, todos los cambios se
ignoran.
 No transaccionales
 Más rápidas.
 Menor requerimiento de espacio.
 Menor requerimiento de memoria para
actualizaciones.
Creación SQL
CREATE TABLE nombre_tabla (definición)
ENGINE = nombre_motor;
ALTER TABLE nombre_tabla ENGINE =
nombre_motor;

Ejemplos:
CREATE TABLE pieza (….) ENGINE=InnoDB;
ALTER TABLE pieza ENGINE=MyISAM;
Motores disponibles
Motor MyISAM
 Sustituyó al ISAM (no disponible en versiones
actuales)
 Tablas no transaccionales.
 Muy rápido en consultas
 Recomendable cuando SELECT supera a los
INSERT o UPDATE.
 Bloqueo a nivel de tabla
 Portable
Almacenamiento MyISAM
 Cada tabla MyISAM se almacena en tres
ficheros:
 .frm: Definición de la tabla.
 .myd: Fichero de datos.
 .myi: Fichero de índice.
Tipos de tablas MyISAM
 Tablas estáticas o de longitud fija.
 Formato por defecto. Más simple, seguro y rápido.
 Se usa cuando no existen campos de tamaño
variable (VARCHAR, BLOB o TEXT)
 Tablas dinámicas
 Cada registro usa sólo el espacio que necesita.
 Problema de fragmentación y algo lento.
 Tablas comprimidas
 Se crea con la utilidad myisampack
 Ocupan muy poco espacio. De sólo lectura.
Motor Merge
 Las tablas resultan de la fusión de dos tablas
MyISAM idénticas.
 Se suele utilizar cuando tenemos tablas muy
grandes que podemos dividir en varias,
permitiendo un acceso más rápido, por
ejemplo, ventas por cada año.
create table t1(texto varchar(100)) ENGINE=MYISAM;
create table t2(texto varchar(100)) ENGINE=MYISAM;
create table total(texto varchar(100)) ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;

INSER_METHOD indica la tabla donde se realizan las inserciones:


FIRST: Primera; LAST: Última; NO: no inserciones
Motor InnoDB
 Tablas transaccionales.
 Máximo rendimiento al procesar grandes
cantidades de datos.
 Recomendado cuando usamos gran cantidad
de instrucciones INSERT o UPDATE
 Las tablas y los índices se almacenan en un
espacio de tabla, por lo tanto, no hay límite
físico del SO en el tamaño de las tablas
InnoDB.
Motor InnoDB
 Claves foráneas e Integridad referencial
 Bloqueo a nivel de registro
 Posibles deadlocks
 No tan rápido como MyISAM
 Motor de terceros (desarrollado por Innobase
ahora propiedad de Oracle)
 Usado por Flickr, Habbo, Wikipedia, Adsense...
Motor Memory (Heap)
 Tablas no transaccionales.
 Se almacenan en memoria, por eso son las
más rápidas.
 Se utilizan para crear tablas temporales de
otras ya existentes. Las SELECT se hacen más
rapidamente. INSERT y UPDATE se realizan
en la tabla original.
 Los índices funcionan de una forma muy
diferente.
Motor DBD (Berkeley DB)
 Creado originalmente en la universidad de
Berkeley.
 Tablas transaccionales.
 El motor no se incluye (como otros) en ciertas
distribuciones.
 Cada tabla DBD se almacena en dos archivos:
 .frm: Definición de tabla.
 .db: Datos e índices.
Otros motores
 EXAMPLE: Motor de pruebas que sirve como ejemplo
en el código.
 FEDERATED: Acceso a datos en tablas remotas en
lugar de tablas locales.
 ARCHIVE: Grandes cantidades de datos en poco
espacio. Solo permite SELECT e INSERT.
 CSV: Datos en ficheros de texto con delimitador
(altamente portable).
 MARIA: En desarrollo. Sustituirá a MyISAM.
 NDB Cluster: No disponible de momento en Windows.
Ejemplos prácticos
 Registrar todas las llamadas recibidas en una
central telefónica o las visitas recibidas en una
página web (logging)
 La velocidad es lo importante. No queremos que la
base de datos sea un cuello de botella.
 Motores más apropiados: MyISAM y ARCHIVE.
Ejemplos prácticos
 Datos utilizados para crear un catálogo u
ofrecer listados (trabajos, subastas, oferta
inmobiliaria,...)
 Vamos a leer (SELECT) más que escribir (INSERT)
 Motor apropiado: MyISAM.
Ejemplos prácticos
 Cualquier aplicación donde se procesen
pedidos (tiendas electrónicas por ejemplo)
 Necesitamos transacciones y posiblemente claves
foráneas
 Motor adecuado: InnoDB.
Ejemplos prácticos
 Aplicación bursatil en tiempo real
 Si la concurrencia no es importante, MyISAM
puede ser una buena solución.
 Si muchos usuarios acceden, escribiendo y leyendo
datos, hay que tener en cuenta bloqueos a nivel de
registro simplemente, por lo que InnoDB sería la
solución.

También podría gustarte