Я добавил в my.conf следующие строки:
query_cache_size=128M
innodb_buffer_pool_size=512M
innodb_flush_method=O_DIRECT
После этого загрузка диска начала расти, достигла 100% и остается стабильной, а также загрузка процессора немного из-за задач, связанных с дисковым вводом-выводом, но физическая память используется только на 50%.
Я немного растерялся, что здесь происходит?
Как показывает практика, innodb_log_file_size предполагается 25% от innodb_buffer_pool_size. В вашем случае вы должны добавить эту переменную следующим образом:
[mysqld]
query_cache_size=128M
innodb_buffer_pool_size=512M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
Нажмите здесь, чтобы узнать, как изменить размер innodb_log_file_size -> https://dba.stackexchange.com/a/1265/877
Вот способ, которым вы можете установить правильный размер innodb_buffer_pool_size в зависимости от количества данных InnoDB, которые у вас есть в настоящее время. Запустите этот запрос:
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;
Если recommended_innodb_buffer_pool_size
возвращает более 75% установленной ОЗУ, затем используйте 75% установленной ОЗУ в качестве рекомендуемого значения. Как упоминалось ранее, установите соответственно innodb_log_file_size.
Согласно innodb_flush_method документация использование O_DIRECT может иметь как положительное, так и отрицательное влияние на вашу производительность
Цитата из документации:
В зависимости от конфигурации оборудования установка innodb_flush_method на O_DIRECT может иметь как положительное, так и отрицательное влияние на производительность. Выполните сравнительный анализ вашей конкретной конфигурации, чтобы решить, какой параметр использовать.