it-swarm.xyz

Как увеличить использование памяти в MySQL Server для повышения скорости?

У меня есть сервер Windows 2008 с 8 ГБ RAM под управлением IIS7 и MySQL. Я отслеживал использование памяти, процессора и диска на сервере и обнаружил, что MySQL использует только 250 МБ ОЗУ, что делает диски очень занятыми, хотя у меня много свободного оперативного диска.

В SQL Server я могу легко установить объем памяти, который я хочу использовать, я ищу ту же настройку в MySQL.

Как я могу настроить MySQL, чтобы использовать больше памяти и уменьшить использование процессора и диска?

30
holiveira

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. Если вы установите эту переменную выше, у вас будет меньше операций записи и чтения непосредственно на диск и с него, что было вашей главной задачей.

20
James

Вам нужно изменить значения в 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 для получения дополнительной информации и рекомендаций.

6
staticsan