Hace ya unos días se me planteó la necesidad de cambiar el motor de almacenamiento de los datos de todas las tablas de una base de datos (bastante grande) de InnoDB a MyISAM.
Como editar una a una cada tabla de la base de datos no era una opción, me puse a buscar un poco y encontré una solución muy sencilla y flexible en CodeSnippets, que simplemente genera el volcado de las consultas necesarias para convertir las tablas de todas las bases de datos del servidor:
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' engine=MyISAM;') FROM information_schema.tables WHERE engine = 'InnoDB';
Si queremos convertir sólo las tablas de una base de datos en concreto, podemos modificar la consulta anterior y escribir algo así:
SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' engine=MyISAM;') FROM information_schema.tables WHERE engine = 'InnoDB' and table_schema = 'NOMBRE_DB';
En donde sólo sería necesario sustituir NOMBRE_DB por el nombre de la base de datos cuyas tablas queremos convertir de InnoDB a MyISAM.
Ambas consultas generan únicamente un listado con las consultas necesarias para realizar la conversión, así que para hacer efectiva la misma tendremos, además, que copiar, pegar y ejecutar las consultas resultantes. Próximamente dedicaremos un artículo a valorar las distintas tecnologías de almacenamiento que ofrece MySQL y sus ventajas e inconvenientes.

