Mysql
 sql >> Base de données >  >> RDS >> Mysql

sauter la copie dans la table tmp sur le disque mysql

Il y a deux choses que vous pouvez faire pour en réduire l'impact

OPTION #1 :Augmenter les variables tmp_table_size et/ou max_heap_table_size

Ces options régiront la taille d'une table temporaire en mémoire avant qu'elle ne soit jugée trop grande, puis les pages sur le disque en tant que table MyISAM temporaire. Plus ces valeurs sont élevées, moins vous aurez de chances d'obtenir une "copie vers la table tmp sur le disque". Veuillez vous assurer que votre serveur dispose de suffisamment de RAM et max_connexions est modérément configuré si une seule connexion DB a besoin de beaucoup de RAM pour ses propres tables temporaires.

OPTION #2 :Utiliser un disque RAM pour les tables tmp

Vous devriez pouvoir configurer un disque RAM sous Linux, puis définir le tmpdir dans mysql pour être le dossier dans lequel le disque RAM est monté.

Pour commencer, configurez un disque RAM dans le système d'exploitation

Créez un dossier dans Linux appelé /var/tmpfs

mkdir /var/tmpfs

Ensuite, ajoutez cette ligne à /etc/fstab (par exemple, si vous voulez un disque RAM de 16 Go)

none                    /var/tmpfs              tmpfs   defaults,size=16g        1 2

et redémarrez le serveur.

Note :Il est possible de faire un disque RAM sans rebooter. N'oubliez pas de toujours ajouter la ligne susmentionnée à /etc/fstab pour avoir le disque RAM après un redémarrage du serveur.

Maintenant pour MySQL :

Ajoutez cette ligne dans /etc/my.cnf

[mysqld]
tmpdir=/var/tmpfs

et redémarrez mysql.

OPTION #3 :Obtenez la table tmp dans le disque RAM dès que possible (en supposant que vous appliquiez d'abord l'OPTION #2)

Vous voudrez peut-être forcer les tables tmp dans le disque RAM aussi rapidement que possible afin que MySQL ne fasse pas tourner ses roues en migrant de grandes tables tmp en mémoire vers un disque RAM. Ajoutez simplement ceci à /etc/my.cnf :

[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K

et redémarrez mysql. Cela entraînera la création de la plus petite table temporaire directement dans le disque RAM. Vous pouvez périodiquement exécuter ls -l /var/tmpfs pour regarder les tables temporaires aller et venir.

Essayez-le !!!

MISE EN GARDE

Si vous ne voyez que des tables temporaires dans /var/tmpfs 24h/24 et 7j/7, cela pourrait avoir un impact sur les fonctionnalités/performances du système d'exploitation. Pour vous assurer que /var/tmpfs n'est pas surpeuplé, envisagez de régler vos requêtes. Une fois cela fait, vous devriez voir moins de tables tmp se matérialiser dans /var/tmpfs.