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

28

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

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

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

holiveira
источник

Ответы:

20

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

Джеймс
источник
11
На самом деле команда show status; должна видеть переменные состояния, такие как Open_tablesи Opened_tables. table_cacheкажется, был удален в последних версиях MySQL.
Мэтт Фенвик
5

Вам нужно изменить значения в my.cnfфайле и перезапустить MySQL, хотя вы можете изменить многие из них во время работы MySQL («SET GLOBAL VARIABLE = value »).

Вы, вероятно , хотите посмотреть на повышение key_buffer_size, sort_buffer, read_bufferи table_cacheдля начала и , возможно innodb_buffer_pool_size, если у вас есть какие - либо таблицы InnoDB. Некоторые из этих значений вы можете значительно увеличить (даже на два порядка), особенно учитывая ваше оборудование. Стандартные настройки MySQL чрезвычайно консервативны и, по-видимому, нацелены на обычные настольные компьютеры смешанного использования около десяти лет назад. Да, и имейте в виду, что 32-битная версия будет иметь проблемы с использованием более 2 ГБ ОЗУ.

Посмотрите в руководстве MySQL для получения дополнительной информации и руководства.

staticsan
источник