Хранение данных плюс индексные данные в памяти - InnoDB против MyISAM
Предположим, база данных состоит из 1 ГБ данных и 1 ГБ данных индекса.
Чтобы минимизировать дисковый ввод-вывод и, следовательно, максимизировать производительность, я хочу выделить память для MySQL, чтобы весь набор данных, включая индексы, мог храниться в ОЗУ (предположим, что на машине имеется изобилие ОЗУ).
Параметр InnoDBinnodb_buffer_pool_size
используется для указания размера буфера памяти, который InnoDB использует для кэширования данных и индексов своих таблиц. (Примечание: память используется для данныхА ТАКЖЕ индексов.)
Параметр MyISAMkey_buffer_size
используется для указания размера буфера памяти, используемого MyISAM для кэширования индексов своих таблиц. (Примечание: память используетсяТОЛЬКО для индексов.)
Если я хочу, чтобы база данных 2 ГБ (данные 1 ГБ и индекс 1 ГБ) помещалась в память в InnoDB, я бы просто настроилinnodb_buffer_pool_size
быть2GB
, Два гигабайта будут содержать и данные, и индекс.
Однако при настройке ключа MyISAMkey_buffer_size
в2GB
это пространство будет использоваться для индекса, но не для данных.
Мои вопросы:
Можно ли явно настроить размер буфера данных MyISAM (не данные индекса)?Когда MyISAM будет считывать данные таблицы (исключая индексные данные) с диска и когда она будет читать из памяти?