* El servidor MySQL incorpora una característica única llamada “motores de almacenamiento”, que 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. MySQL dispone de una docena de motores de almacenamiento propios, más los motores externos desarrollados por terceras partes que se pueden incorporar al servidor. Algunos de los más conocidos son: MyISAM, InnoDB, HEAP, NDB.
* Seleccionar el motor de almacenamiento de una tabla:
CREATE TABLE nombre_tabla (definición) ENGINE = nombre_motor;
ALTER TABLE nombre_tabla ENGINE = nombre_motor;

Ejemplos:
CREATE TABLE City (…) ENGINE=InnoDB;
ALTER TABLE City ENGINE=MyISAM;

* Caractrísticas del motor MyISAM:
– No transaccional.
– Bloqueos a nivel de tabla.
– Muy rápido en lectura y escritura (excepto escrituras simultaneas en la
misma tabla).
– Bajo requerimiento de espacio en disco y memoria.
– Los datos se guardan en disco: diferentes ficheros para la definición de la
tabla, los datos y los índices.
– Es el motor por defecto de MySQL.
– Es una buena elección cuando necesitamos velocidad, y tenemos pocas
modificaciones simultaneas de la tabla.

* Caractrísticas del motor InnoDB:
– Transaccional.
– Multiversionado: cuando múltiples transacciones modifican registros, InnoDB
mantiene aisladas las transacciones guardando para cada una de ellas
un versión distinta de un mismo registro, a cada transacción la versión que
le corresponde.
– Bloqueos a nivel de registro.
– Restricciones en claves foráneas.
– Fácil recuperación de datos en caso de error.
– Alta concurrencia más segura en escritura.
– Deshacer transacciones a medias (“rollback”).
– Los datos se guardan en disco: un fichero para la definición de la
tabla, y un “tablespace” para guardar conjuntamente datos e índices. El
tablespace puede consistir en uno o más ficheros, o incluso una partición
entera en disco.
– Podemos especificar como crecen los tablespaces en el fichero de
configuracion /etc/mysql/my.cnf. Por ejemplo:
[mysqld]
innodb_data_file_path = ibdata1:100M;ibdata2:100M:autoextend:max:500M
– Necesita mas espacio en disco y memoria que MyISAM para guardar los datos
(unas tres veces mas de espacio en disco, y montones de RAM para las
memorias temporales si queremos conseguir un rendimiento óptimo).
– Es una buena elección cuando necesitamos transacciones, restricciones en
claves foráneas, o tenemos muchas escrituras simultaneas.

* Caractrísticas del motor HEAP:
– Los datos se guardan en memoria, utilizando algoritmos que hacen un uso
óptimo de este medio.
– Es muy, muy rápido.
– Podemos crear una tabla HEAP a partir de una tabla en disco con:
CREATE TABLE nombre_tabla ENGINE=MEMORY SELECT * FROM nombre_tabla_disco;
– Es una buena elección cuando necesitamos realizar operaciones muy rápidas
sobre conjuntos pequeños de datos.

* Caractrísticas del motor NDB:
– Es el motor de almacenamiento de los clúster de MySQL.
– La base de datos esta repartida por los diferentes nodos del clúster.
– Proporciona alta disponibilidad mediante redundancia.
– Proporciona alto rendimiento mediante fragmentación de datos sobre los
grupos de nodos.
– Proporciona alta escalabilidad mediante la combinación de las dos
características anteriores.
– Los datos se guardan en memoria, pero los logs van a disco.
– Es una buena elección cuando disponiendo de varios servidores necesitamos a
la vez velocidad, transacciones y redundancia de datos; replicación
síncrona; y resistencia a caídas de servidores.

* Comparación de los motores:
MyISAM InnoDB HEAP NDB
Multi-statement transactions, ROLLBACK – X – X
Foreign key constraints – X – –
Locking level table row table row
BTREE indexes X X – X
FULLTEXT indexes X – – –
HASH lookups – X X X
Other in-memory tree-based index – – 4.1.0 –
GIS, RTREE indexes 4.1.0 – – –
Unicode 4.1.0 4.1.2 – –
Merge (union views) X – – –
Compress read-only storage X – – –
Relative disk use low high – low
Relative memory use low high low high

* Podemos deshabilitar los motores de almacenamiento que no necesitamos para
ahorrar memoria del servidor, ya que no necesitaremos reservar memoria para
los buffers y otras estructuras de datos asociadas con el motor. Por ejemplo:

shell> mysqld –skip-bdb –skip-innodb

* Lecturas para profundizar:
– http://dev.mysql.com/doc/refman/5.0/es/storage-engines.html
– http://dev.mysql.com/doc/refman/5.0/es/myisam-storage-engine.html
– http://dev.mysql.com/doc/refman/5.0/es/innodb.html

Libro Gratis Sobre Ajax Introducción a Ajax es un material publicado por Javier Eguíluz Pérez para LibrosWeb bajo una licencia Creative Commons. Entre los catorce capítulo...
Estrategias de Marketing que podemos usar en Navidad Estrategias de Marketing que podemos usar en Navidad Crearnos una imagen navideña adicional a nuestra imagen corporativa Que nuestro negocio sea de ...
CEO de Mozilla asegura que quien no sepa de internet no debe gobernar Palabras duras y específicas dedicó Gary Kovacs, Director Ejecutivo de Mozilla, a los gobiernos alrededor del mundo, asegurando que su desconocimiento...
Perl and PHP Regular Expressions   PHP regexes are based on the PCRE (Perl-Compatible Regular Expressions), so any regexp that works for one should be compatible with the ot...
Trabajar en Internet Si vamos a trabajar en Internet o estamos en las primeras fases, dos cosas fundamentales que vamos a necesitar son cautela y persistencia. Puede parec...
#Microsoft decidió promocionar #Bing, su buscador web, a través de su capacidad matemática para “adivinar las noticias del futuro” Microsoft decidió promocionar Bing, su buscador web, a través de su capacidad matemática para "adivinar las noticias del futuro" según Carlos de la Pu...
News Corporation ofrece en Venta MySpace Cuando News Corp. compró MySpace, era una plataforma pionera. Pero perdió la batalla frente a Facebook y el número de usuarios cayó en picada. El...
mysqli num rows (PHP 5) mysqli_num_rows — Obtiene el número de filas en un resultado Descripción Estilo por procedimientos: mixto mysqli_num_rows ( mysqli...
Whatsapp la aplicación mas descargada para los IPhone La aplicación de mensajería instantánea Whatsapp sigue siendo la app de pago más descargada para iPhone. tres años después de su llegada a la Apple St...
Este año el 70% de los móviles que se venderán serán smartphones Más de mil millones de smartphones y tabletas se venderán en 2013. Y los teléfonos inteligentes serán el 70% de todos los aparatos vendidos este año, ...
MOTORES DE ALMACENAMIENTO en MySQL
Tagged on: