调优 InnoDB 相关 MySQL 配置后磁盘 I/O 利用率高达 100%

spa*_*key 5 mysql optimization innodb

我在“my.conf”中添加了以下几行:

query_cache_size=128M
innodb_buffer_pool_size=512M
innodb_flush_method=O_DIRECT
Run Code Online (Sandbox Code Playgroud)

之后磁盘利用率开始上升,达到 100% 并保持稳定,由于磁盘 I/O 相关任务,CPU 也有所上升,但物理内存仅使用了 50%。

我有点迷茫 这是怎么回事?

Rol*_*DBA 7

根据经验,innodb_log_file_size应该是innodb_buffer_pool_size 的25% 。在您的情况下,您应该按如下方式添加该变量:

[mysqld]
query_cache_size=128M
innodb_buffer_pool_size=512M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
Run Code Online (Sandbox Code Playgroud)

单击此处学习调整 innodb_log_file_size -> https://dba.stackexchange.com/a/1265/877

这是一种您可以根据当前拥有的 InnoDB 数据量设置正确大小的 innodb_buffer_pool_size 的方法。运行此查询:

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; 
Run Code Online (Sandbox Code Playgroud)

如果recommended_innodb_buffer_pool_size返回超过已安装 RAM 的 75%,则使用已安装 RAM 的 75% 作为推荐值。如前所述,相应地设置 innodb_log_file_size。