* 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

Lo que podemos ver en el CES 2015 El mercado de la electrónica de consumo alcanzará solo en EEUU los 223.000 millones de dólares en 2015, un 3% más que en 2014, según las previsiones d...
Guía Google+ para empresas Desde hace relativamente poco tiempo que Google ha abierto una nueva etapa en la que permitir que cualquier compañía interesada cree una página en su ...
Las libertades del software libre De acuerdo con tal definición, un software es "libre" cuando garantiza las siguientes libertades:2 Libertad Descripción 0 la libertad de...
Apple planea tres nuevos modelos de iPhone Mientras Apple prepara el lanzamiento de sus nuevos iPhone, previstos para finales de este año, se reafirman los rumores que saltaron a finales de 201...
3 errores que no hay que cometer en Facebook al buscar trabajo Quien entrega estos consejos es Tony Morrison, Vicepresidente de Desarrollo de Negocios de la compañía Cachinko. Y si bien van orientados específicame...
Facebook Offers lleva los cupones de descuento a los feeds de noticias En agosto de 2011 Facebook anunciaba que echaba el cierre a su servicio de ofertas locales Facebook Deals. Entonces la red social afirmaba que pese a ...
#Google no lanzará más parches para versiones anteriores a Android 4.4 KitKat Google habría decidido dejar de lanzar parches para móviles y tablets que tengan versiones anteriores a Android 4.4 KitKat. Esta noticia ha saltado ...
Tabla de Colores para las Webs en Hexadecimal Tabla de Colores para las Webs en Hexadecimal Nombre Hexadecimal RGB Muestra R G B ...
Wikipedia, Mozilla y WordPress, apagadas contra la SOPA Tras varias semanas amenazando con un fundido a negro en Internet como protesta contra la ley antipiratería (SOPA) que se discute estos días en Estado...
Modulo Opencart para Calculos Multiples en Envios Esta extensión le permite ajustar las tarifas de transporte basado en geozones y grupos de clientes. características: * Establecer las tasas de ...