- Nie MyISAM nie ma pamięci podręcznej danych ogólnego przeznaczenia. Jest to udokumentowane w opisie „key_buffer_size” z oficjalna dokumentacja
:
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.
Nowoczesne systemy operacyjne, zwłaszcza Linux, mają zwykle bardzo inteligentne podsystemy pamięci wirtualnej, które przechowują często używane pliki w pamięci podręcznej strony, więc dyskowe operacje we/wy są utrzymywane na minimalnym poziomie, gdy zestaw roboczy mieści się w dostępnej pamięci.
- A więc odpowiadając na drugie pytanie:nigdy.
Ważne jest, aby nie popaść w „przewymiarowanie bufora” również dla różnych zmiennych myisam, takich jak read_buffer_size, read_rnd_buffer_size, sort_buffer_size, join_buffer_size itp., ponieważ niektóre są przydzielane dynamicznie, więc większe nie zawsze oznacza szybsze - a czasami może być nawet wolniejsze - zobacz ten post na mysqlperformanceblog dla bardzo interesującej sprawy.
Jeśli korzystasz z 5.1 na platformie posix, możesz przetestować myisam_use_mmap w Twoim obciążeniu, ma to pomóc w przypadkach wysokiej rywalizacji, zmniejszając liczbę wywołań malloc().