Mysql
 sql >> Database >  >> RDS >> Mysql

Conservazione dei dati più i dati dell'indice in memoria - InnoDB vs. MyISAM

  • Nessun MyISAM non ha una cache dati generica. Ciò è documentato nella descrizione "key_buffer_size" di la documentazione ufficiale :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.

I sistemi operativi moderni, in particolare Linux, tendono ad avere sottosistemi di memoria virtuale molto intelligenti che manterranno i file a cui si accede frequentemente nella cache della pagina, quindi l'I/O del disco viene mantenuto al minimo quando il set di lavoro si adatta alla memoria disponibile.

  • Quindi per rispondere alla tua seconda domanda:mai.

È importante non cadere nel "sovradimensionamento del buffer" anche per le varie variabili myisam come read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size, ecc poiché alcune sono allocate dinamicamente, quindi più grande non significa sempre più veloce - e talvolta può anche essere più lento - guarda questo post su mysqlperformanceblog per un caso molto interessante.

Se sei su 5.1 su una piattaforma posix, potresti voler confrontare myisam_use_mmap sul tuo carico di lavoro, dovrebbe aiutare i casi ad alta contesa riducendo la quantità di chiamate malloc().