Назад | Перейти на главную страницу

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

У меня есть сервер Windows 2008 с 8 ГБ ОЗУ, на котором запущены 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 для получения дополнительной информации и рекомендаций.