Как использовать большую часть памяти, доступной на MySQL

1 ответ

Я могу легко верить 95%-му ключевому уровню удачного обращения в кэш. Слушайте свою статистику:

Вы заявили, что у Вас есть 50 ГБ Индексов для таблиц MyISAM

Ключевой кэш разработан для кэширования индексных страниц для таблиц MyISAM. Эта опция установлена key_buffer_size опция

Вы сказали, что это было установлено в 2G. Неудивительный частота успешных обращений составляет 95%. Индексные блоки разбиваются на страницы в и из ключевого кэша постоянно. Десятки запросов, бывших нужных в определенной строке, загружаются в keycache после того, как MySQL узнает, что индекс (.MYI) информация первым необходимым запросом не был первоначально там. Все последующие запросы, требующие той же.MYI информации к данным поиска (.MYD), будут уже кэшироваться после того, как первый запрос загрузил его. MySQL DOES NOT CACHE MyISAM Data в его собственных кэшах.

Необходимо смочь установить key_buffer_size к 8G.

Вот выборка из http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_key_buffer_size:

Можно увеличить значение для получения лучшей индексной обработки для всех чтений и нескольких записей; в системе, первичная функция которой состоит в том, чтобы выполнить MySQL с помощью механизма устройства хранения данных MyISAM, 25% общей памяти машины являются допустимым значением для этой переменной. Однако необходимо знать, что при создании значения слишком большим (например, больше чем 50% общей памяти машины), система могла бы начать разбивать на страницы и становиться чрезвычайно медленной. Это вызвано тем, что MySQL полагается на операционную систему для выполнения файловой системы, кэширующейся для чтений данных, таким образом, необходимо оставить некоторую комнату для кэша файловой системы. Необходимо также рассмотреть требования к памяти любых других механизмов устройства хранения данных, которые можно использовать в дополнение к MyISAM.

Этот тот же URL объясняет, что макс. key_buffer_size для 32-разрядной ОС является 4G. Вы не должны идти мимо 8G для key_buffer_size с Вашей данной конфигурацией сервера.

Что касается Ваших чтений данных, единственная переменная состояния, в которой Вы нуждаетесь, является Key_reads. Это дает признак, как часто индексная страница должна быть выбрана из.MYI файла.

Что необходимо контролировать для Вас, вводят, отношение удачного обращения в кэш следующее

KRR_NOW = Key_read_requests Now
KRR_SEC = Key_read_requests one ago
KRD_NOW = Key_reads Now
KRD_SEC = Key_reads one second ago
KRR_DELTA = KRR_NOW - KRR_SEC
KRD_DELTA = KRD_NOW - KRD_SEC

Процент совпадений KeyCache (KHR) является поэтому этой формулой

KHR = 100 * (KRR_DELTA - KRD_DELTA) / KRR_DELTA

Вы хотите Процент совпадений KeyCache 99 + %

Теперь на flipsize вещей, позвольте, обсуждают InnoDB.

Ваш innodb_buffer_pool_size должен быть установлен на 4G. Thi то, потому что кэши пула буферов InnoDB и страницы данных и индексные страницы. Можно дать innodb_buffer_pool, более определенное число окружило использование следующего:

SELECT CONCAT(CEILING(ibbytes / POWER(1024,3)),'G') FROM (SELECT SUM(data_length+index_length) ibbytes FROM information_schema.tables where engine='InnoDB') A;
1
ответ дан 4 December 2019 в 01:50

Теги

Похожие вопросы