Supposons une base de données constituée de 1 Go de données et de 1 Go de données d'index. Pour minimiser les E/S du disque et donc optimiser les performances, je souhaite allouer de la mémoire à MySQL afin que l'intégralité du jeu de données, y compris les index, puisse être stockée dans la RAM (en supposant que la machine dispose de RAM).Conservation des données et des données d'index en mémoire - InnoDB vs. MyISAM
Le paramètre InnoDB innodb_buffer_pool_size
permet de spécifier la taille du tampon de mémoire qu'InnocD utilise pour mettre en cache les données et les index de ses tables. (Remarque: La mémoire est utilisée pour les données ET index.)
Le paramètre MyISAM key_buffer_size
est utilisé pour spécifier la taille de la mémoire tampon MyISAM utilise les index de cache de ses tables. (Note: La mémoire est utilisée SEULEMENT pour les index.)
Si je veux la base de données de 2 Go (1 Go de données et l'indice 1 Go) pour entrer dans la mémoire sous InnoDB, je voudrais simplement configurer le innodb_buffer_pool_size
être 2GB
. Les deux gigaoctets contiendront à la fois les données et l'index. Toutefois, lors de la définition de la clé MyISAM key_buffer_size
à 2GB
, cet espace sera utilisé pour l'index, mais pas pour les données.
Mes questions sont les suivantes:
- peut "la taille de la mémoire tampon de données" de MyISAM (pas de données d'index) être configuré explicitement?
- Quand MyISAM lit-il les données de table (à l'exclusion des données d'index) à partir du disque et quand lit-il de la mémoire?