sql >> Databáze >  >> RDS >> Mysql

Uchovávání dat plus indexová data v paměti - InnoDB vs. MyISAM

  • Žádný MyISAM nemá žádnou mezipaměť dat pro obecné účely. To je zdokumentováno v popisu "key_buffer_size" z oficiální dokumentaci :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.

Moderní operační systémy, zejména Linux, mají tendenci mít velmi chytré subsystémy virtuální paměti, které udrží často používané soubory v mezipaměti stránek, takže diskové I/O jsou udržovány na naprostém minimu, když se pracovní sada vejde do dostupné paměti.

  • Abych tedy odpověděl na vaši druhou otázku:nikdy.

Je důležité nespadnout do „nadměrné velikosti vyrovnávací paměti“ u různých proměnných myisam, jako jsou read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size atd., protože některé jsou alokovány dynamicky, takže větší nemusí vždy znamenat rychlejší – a někdy to může být dokonce pomalejší – viz tento příspěvek na mysqlperformanceblog pro velmi zajímavý případ.

Pokud používáte 5.1 na platformě posix, možná budete chtít porovnat myisam_use_mmap při vašem pracovním vytížení by to mělo pomoci případům velkého sporu snížením počtu volání malloc().




  1. Zakázat a později povolit všechny indexy tabulek v Oracle

  2. PostgreSQL 11:Co je nového

  3. MariaDB JSON_VALUE() vysvětleno

  4. Duplicitní záznam pro klíč 'PRIMARY'. Ignorování mezer pro řetězce