- Ingen MyISAM har ingen datacache för allmänt bruk. Detta finns dokumenterat i "key_buffer_size"-beskrivningen från den officiella dokumentationen
:
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.
Moderna operativsystem, särskilt Linux, tenderar att ha mycket smarta virtuella minnesundersystem som kommer att behålla filer som ofta används i sidcachen, så disk I/O hålls på ett minimum när arbetsuppsättningen får plats i tillgängligt minne.
- Så för att svara på din andra fråga:aldrig.
Det är viktigt att inte hamna i "bufferöverdimensionering" också för de olika myisam-variablerna som read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size, etc, eftersom vissa är dynamiskt allokerade, så större betyder inte alltid snabbare - och ibland kan det till och med vara långsammare - se detta inlägg på mysqlperformanceblog för ett mycket intressant fall.
Om du använder 5.1 på en posix-plattform kanske du vill jämföra myisam_use_mmap på din arbetsbörda, är det tänkt att hjälpa fall med högt påstående genom att minska mängden malloc()-anrop.