У меня есть сервер Windows 2008 с 8 ГБ RAM под управлением IIS7 и MySQL. Я отслеживал использование памяти, процессора и диска на сервере и обнаружил, что MySQL использует только 250 МБ ОЗУ, что делает диски очень занятыми, хотя у меня много свободного оперативного диска.
В SQL Server я могу легко установить объем памяти, который я хочу использовать, я ищу ту же настройку в MySQL.
Как я могу настроить MySQL, чтобы использовать больше памяти и уменьшить использование процессора и диска?
table_cache
- самая полезная директива конфигурации, которую нужно изменить. Каждый раз, когда MySQL обращается к таблице, она загружает таблицу в кэш. Если у вас есть большое количество таблиц, быстрее их кэшировать.
Посмотрите на переменные вашего сервера, выполнив:
show status;
и посмотрите на переменную open_tables
. Если это так же, как ваш table_cache
значение и opened_tables
продолжает расти, тогда вам нужно увеличить table_cache
значение в вашем файле конфигурации. Вы найдете баланс, экспериментируя с этими переменными в пиковое время. Вы хотите настроить его так, чтобы в часы пиковой нагрузки было мало opened_tables
даже после долгого времени работы сервера.
key_buffer_size
также является хорошей переменной для экспериментов. Эта переменная влияет на размер буфера индекса, и увеличение этой переменной увеличивает скорость обработки индекса MySQL. Вы можете посмотреть на переменные с помощью show variables;
снова введите команду и сравните key_read_requests
до key_reads
. В идеале вы хотите, чтобы соотношение между этими двумя переменными было как можно ниже, и вы можете сделать это, увеличив размер key_buffer_size
. Если вы установите эту переменную выше, у вас будет меньше операций записи и чтения непосредственно на диск и с него, что было вашей главной задачей.
Вам нужно изменить значения в my.cnf
файл и перезапустите MySQL, хотя многие из них можно изменить во время работы MySQL (значение 'SET GLOBAL VARIABLE = ').
Возможно, вы захотите взглянуть на увеличение key_buffer_size
, sort_buffer
, read_buffer
а также table_cache
для начинающих и, вероятно, innodb_buffer_pool_size
, если у вас есть таблицы InnoDB. Некоторые из этих значений вы можете значительно увеличить (даже на два порядка), особенно учитывая ваше оборудование. Стандартные настройки MySQL чрезвычайно консервативны и, по-видимому, нацелены на обычные настольные компьютеры смешанного использования около десяти лет назад. Да, и имейте в виду, что 32-битная версия будет иметь проблемы с использованием более 2 ГБ ОЗУ.
Посмотрите в Руководство по MySQL для получения дополнительной информации и рекомендаций.