Retour : Page Principale > sommaire aide > sommaire aide-mémos

Utiliser un disque virtuel pour le dossier temporaire de Mysql


Ressources


Pincipe

Mysql décide s'il doit écrire une table temporaire sur le disque ou en mémoire en fonction des paramètres : tmp_table_size et max_heap_table_size
Il est important que ces deux paramètres dans le fichier my.cnf est la même valeur sinon la plus petite des deux est utilisée.
Si une requête nécessite une table temporaire alors Mysql vérifie la taille des résultats de la requête est écrit la table en mémoire si sa taille est inférieure à la plus petite des valeurs de tmp_table_size et max_heap_table_size. Dans le cas contraire, la requête est écrite sur le disque ce qui ralentie énormément le disque.
Par ailleurs, Mysql semble aussi décidé par ailleurs d'écrire certaines table sur le disque malgré les paramètres de my.cnf. Dans ce dernier cas, il devient pertinent de créer un disque en RAM pour le dossier temporaire de Mysql.

Création d'un disque en RAM pour une instance de Mysql sur Agathis

  • Se rendre dans le dossier de l'instance de Mysql : cd /home/mysql/5.6/
  • Créer le dossier du disque virtuel : mkdir /home/mysql/5.6/tmp-ram
  • Donner les bon droits au dossier : chown mysql:mysql /home/mysql/5.6/tmp-ram
  • Déterminer les id de l'utiliateur mysql : id mysql
  • Ajouter la ligne suivante dans /etc/fstab : tmpfs /home/mysql/5.6/tmp-ram tmpfs rw,gid=1002,uid=1002,size=256M,nr_inodes=10k,mode=0700 0 0
  • Monter le système de fichier : mount /home/mysql/5.6/tmp-ram
  • Modifier le fichier /etc/mysql/5.6/my.cnf en ajoutant la ligne : tmpdir=/home/mysql/5.6/tmp-ram
  • Redémarrer l'instance de Mysql : service mysql-56 restart

Commandes utiles

  • Pour voir le dossier temporaire utilisé par l'instance de Mysql : SHOW VARIABLES LIKE 'tmpdir';
  • Pour voir le nombre de table créées sur disque par rapport aux tables créées en mémoire : SHOW GLOBAL STATUS LIKE 'Created_tmp%tables';