InnoDB : passage à 1 fichier par table

Publié le 21/04/2020  MySQL

En InnoDB, il est possible de mettre une table dans un fichier. Par défaut, historiquement, toutes les tables InnoDB étaient stockées dans un seul fichier.
Pour activer cela, éditer le fichier /etc/mysql/mariadb.conf.d/50-server.cnf et ajouter :
[mysqld]
innodb_file_per_table = ON
Redémarrer le serveur : service mysql restart

Une fois fait, on peut lancer l'optimisation des tables afin de déplacer les données dans les fichiers
OPTIMIZE TABLE database.table
+----------------+----------+----------+-------------------------------------------------------------------+
| Table          | Op       | Msg_type | Msg_text                                                          |
+----------------+----------+----------+-------------------------------------------------------------------+
| database.table | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| database.table | optimize | status   | OK                                                                |
+----------------+----------+----------+-------------------------------------------------------------------+
Recommencer la commande pour l'ensemble des tables à convertir

On peut alors voir des fichiers apparaître dans le stockage : ls -l /var/lib/mysql/*/*.ibd