Suponga una base de datos que consta de 1 GB de datos y 1 GB de datos de índice.Conservación de datos más índice en la memoria - InnoDB vs. MyISAM
Para minimizar el disco IO y maximizar el rendimiento, quiero asignar memoria a MySQL para que todo el conjunto de datos, incluidos los índices, se conserven en la RAM (suponiendo que la máquina tiene RAM en abundancia).
El parámetro InnoDB innodb_buffer_pool_size
se utiliza para especificar el tamaño del búfer de memoria que InnoDB utiliza para almacenar en caché los datos y los índices de sus tablas. (Nota: La memoria se utiliza para datos Y índices.)
El parámetro MyISAM key_buffer_size
se utiliza para especificar el tamaño del búfer de memoria utiliza MyISAM a los índices de caché de sus tablas. (Nota: La memoria se utiliza SOLAMENTE para los índices.)
Si quiero la base de datos de 2 GB (1 GB de datos y el índice de 1 GB) para encajar en memoria bajo InnoDB, simplemente habría configurar el innodb_buffer_pool_size
estar 2GB
. Los dos gigabytes contendrán tanto los datos como el índice.
Sin embargo, al establecer la clave MyISAM key_buffer_size
en 2GB
, ese espacio se usará para el índice, pero no para los datos.
Mis preguntas son:
- puede "tamaño del búfer de datos" de MyISAM (no los datos de índice) pueden configurar de forma explícita?
- ¿Cuándo MyISAM leerá los datos de la tabla (excluyendo los datos de índice) del disco y cuándo se leerá desde la memoria?