Одна вещь, которая должна быть принята во внимание, - то, как MySQL использует буферы для своих главных механизмов хранения: InnoDB и MyISAM .
То, что кешируется в памяти, сильно отличается между этими механизмами хранения.
InnoDB кэширует как данные, так и страницы индекса. Они загружаются в пул буферов InnoDB, размер которого определяется значением innodb_buffer_pool_size .
MyISAM кэширует только индексные страницы, и они загружаются в Key Cache (Key Buffer), размер которого равен key_buffer_size .
Вы должны использовать information_schema.tables для получения данных и размеров индексов, занимаемых на диске, чтобы правильно определить размер пула буферов InnoDB и кэш-памяти ключей MyISAM .
В зависимости от того, сколько у вас есть данных и сколько времени у вас будет, вы можете согреть кеширование следующим образом:
Для каждого стола TableT
- перейти к каждому индексу NDX
- для каждого индекса NDX
- Запустите SELECT каждый столбец в NDX, по крайней мере, один столбец не проиндексирован в TableT из TableT
Этим вы гарантируете, что каждая страница данных и индекса будет прочитана хотя бы один раз. Они будут сидеть в тайнике. Эта концепция частично и в принципе практикуется компанией Percona . Percona встроила эту концепцию в mk-slave-prefetch . Что делает эта программа
- читать журналы ретрансляции на подчиненном устройстве, перед тем как подчиненное устройство обрабатывает в нем SQL
- взять оператор SQL из журнала ретрансляции и преобразовать его в SELECT, используя предложения WHERE, GROUP BY и ORDER BY в качестве руководства по выбору индексов
- выполнить оператор SELECT, полученный из преобразованного SQL
Это заставляет подчиненное устройство иметь 99,99% данных, необходимых ведомому для быстрой обработки SQL. Это также приводит к тому, что ведомое устройство готовится в случае, если вы вручную переключаетесь на ведомое устройство и переводите его в ведущий, ЧТО КЭШЫ ПРОСТО ТОЛЬКО ОДНОВРЕМЕННО, КАК МАСТЕР, КОТОРЫЙ ВЫ НЕ СДЕЛАЛИ.
ВЫВОД
Ничто не сравнится с готовностью, желанием и способностью использования кэшей в среде с тяжелыми INSERTS, UPDATE и DELETE.
Попробуйте!
ПРЕДОСТЕРЕЖЕНИЕ
С появлением таких продуктов, как memcached, некоторые избавились от необходимости выполнять правильную настройку MySQL. Конечно, многие сайты извлекают выгоду из ускорения поиска данных, обеспечиваемого путем контроля поведения кэширования данных, что разработчики быстро заметили с помощью memcached. Многие другие сайты, просто переключая хранилища или правильно настраивая MySQL, получили те же преимущества в производительности. Прежде чем отказаться от базы данных и строго использовать ее в качестве хранилища, максимально используйте свою базу данных. Следуйте правилам due diligence, и вы можете быть приятно удивлены тем, что MySQL сделает для вас.