Я довольно большой нуб, когда дело доходит до настройки MySQL для повышения производительности. И, честно говоря, я не беспокоюсь о тонкой настройке, чтобы выжать из MySQL каждый последний бит производительности, но я знаю, что самое важное, что дает один из лучших результатов, - это правильная настройка кэшей / буферов.
Я пытался упростить задачу, используя только InnoDB в качестве механизма хранения. И у меня есть выделенный сервер для MySQL. Он имеет 8 ГБ оперативной памяти, как я должен распределить это, чтобы максимизировать производительность? Я хотел бы иметь возможность поместить всю мою базу данных в память для лучшей производительности. База данных составляет около 5 ГБ. Это возможно?
Сколько памяти я должен выделить для кэша запросов? Сколько в пул буферов InnoDB? Сколько для остальной части компьютера (то есть процессов, не связанных с MySQL)? И т.п.
Поскольку я не использую MyISAM, мне не нужно правильно помещать много памяти в кеш ключей?
ИМХО ты должен быть в состоянии пойти с
Это будет 62,5% ОЗУ с достаточным объемом ОЗУ для серверной ОС плюс память для соединений с БД
@kvisle рекомендуется использовать mysqltuner.pl. Этот сценарий отлично подходит для оценки объема ОЗУ, выделяемого для join_buffer_size, sort_buffer_size, read_buffer_size и read_rnd_buffer_size. Эти 4 буфера, добавленные вместе, умножаются на max_connections. Этот ответ добавляется в статические буферы (innodb_buffer_pool_size + key_buffer_size). Объединенные суммы сообщаются. Если эта объединенная сумма превышает 80% ОЗУ, тогда вы должны уменьшить размер буфера. mysqltuner.pl будет очень полезен в этом отношении.
Поскольку все ваши данные - это InnoDB, вы можете сделать key_buffer_size (буфер кэширования ключей для индексов MyISAM) очень низким (я рекомендую 64M).
Вот пост, который я сделал в DBA StackExchange, чтобы вычислить рекомендуемый размер innodb_buffer_pool_size .
ОБНОВЛЕНИЕ 2011-10-15 19:55 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Если вы знаете, что у вас будет 5 ГБ данных, тогда моя первая рекомендация была в порядке. Однако я забыл добавить одну вещь:
Размер файла журнала должен составлять 25% от пула буферов InnoDB
ОБНОВЛЕНИЕ 2011-10-16 13:36 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Правило 25% основано исключительно на использовании двух файлов журнала. Хотя можно использовать несколько файлов журнала innodb, два обычно работают лучше всего.
Другие выразили, используя 25%
Однако, честно говоря, кто-то из оригинальной компании InnoBase Oy заявил, что не использует правило 25% из-за наличия большего пула буферов InnoDB .
Естественно, правило 25% не может работать при наличии большого количества оперативной памяти. На самом деле самый большой размер innodb_log_file_size, разрешенный для использования только 2 файлов журнала, составляет 2047 МБ, поскольку объединенный размер файла журнала должен быть менее 4 ГБ (4096 МБ).
ПРИМЕР: Один из клиентов моего работодателя имеет сервер БД с 192 ГБ ОЗУ. Нет никакого способа иметь 48G лог-файлы. Я просто использую максимальный размер файла журнала innodb, 2047M. @ Kvisle в комментарии к моему ответу просто дает ссылку, указывающую, что вам не нужно ограничивать себя двумя файлами журнала. Если у вас есть N файлов журнала, они не могут составлять 4G. Мое правило 25% просто в идеальном мире (сервер БД с 8 ГБ или меньше).
источник