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

Conserver les données et les données d'index en mémoire - InnoDB vs MyISAM

  • Non MyISAM n'a pas de cache de données à usage général. Ceci est documenté dans la description "key_buffer_size" de la documentation officielle :This is because MySQL relies on the operating system to perform file system caching for data reads, so you must leave some room for the file system cache.

Les systèmes d'exploitation modernes, en particulier Linux, ont tendance à avoir des sous-systèmes de mémoire virtuelle très intelligents qui conserveront les fichiers fréquemment consultés dans le cache de page, de sorte que les E/S de disque sont maintenues au strict minimum lorsque l'ensemble de travail tient dans la mémoire disponible.

  • Donc, pour répondre à votre deuxième question :jamais.

Il est important de ne pas tomber dans le "surdimensionnement du tampon" également pour les différentes variables myisam telles que read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size, etc. car certaines sont allouées dynamiquement, donc plus gros ne signifie pas toujours plus rapide - et parfois même plus lent - voir ce message sur mysqlperformanceblog pour un cas très intéressant.

Si vous êtes sur 5.1 sur une plate-forme posix, vous voudrez peut-être comparer myisam_use_mmap sur votre charge de travail, il est censé aider les cas de conflit élevé en réduisant la quantité d'appels malloc().