InnoDB ~ Utiliser InnoDB par défaut dans MYSQL

Mis à jour le , par Jacky Thierry, dans la catégorie #Développement web

InnoDB Mysql

A propos de l'auteur

Jacky THIERRY

CTO, Project Manager, Startup owner

Travaillant depuis plus de 15 ans dans le digital, j'ai dirigé de nombreux projets pour des grosses companies mondiales, des agences web, et des associations locales. Je suis spécialisé dans le développement agile avec des équipes outsourcées.

  • Jacky Thierry linkedin
  • Jacky Thierry twitter
  • Jacky Thierry instagram
  • Jacky Thierry RSS feed
Jacky Thierry

Mysql est une des base de données les plus populaires et certainement la plus connue. Sa simplicité et sa rapide mise en production séduit beaucoup d’administrateurs. Par défaut, elle utilise le moteur MyISAM pour ses tables, et il devient vite intéressant de passer à InnoDB si l’on prévoit un usage critique de ses bases.

Pour cela, il faut modifier le fichier de configuration mysql, commenter la ligne skip-external-locking et rajouter le contenu suivant :

/etc/mysql/my.cnf

external-locking
default-storage_engine = InnoDB
innodb_buffer_pool_size = 512M
innodb_log_file_size = 128M
innodb_log_buffer_size = 32M
max_allowed_packet = 16M
max_connections = 500
innodb_file_per_table

Pour la taille du buffer et du fichier de log, cela dépendra de l’utilisation voulue de mysql. Pour un serveur qui fera principalement du SQL, mettez 50% de la RAM à innodb_buffer_pool_size, et 25% de innodb_buffer_pool_size à innodb_log_file_size. Ajuster selon la RAM et les besoins.

Il faut maintenant supprimer les anciens fichiers de log pour que mysql les recrée à la taille désirée (128M dans cet exemple)

rm /var/lib/mysql/ib_logfile*

Enfin, fermer et relancer mysql /etc/init.d/mysql restart et toutes les nouvelles bases seront en InnoDB.

Pour le vérifier, rien de plus simple :

mysql -u adminsql -p

CREATE DATABASE test;
USE test;
CREATE TABLE `table` (id INT, nom varchar(100));
SHOW TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_NAME = 'table';
DROP DATABASE test;