我在“my.conf”中添加了以下几行:
query_cache_size=128M innodb_buffer_pool_size=512M innodb_flush_method=O_DIRECT
之后,磁盘利用率开始提高,达到了100%并保持稳定,由于磁盘I / O相关的任务,CPU也有所提高,但物理内存仅用了50%。
我有点失落这里发生了什么?
根据经验, innodb_log_file_size应该是innodb_buffer_pool_size的 25%。 在你的情况下,你应该添加该variables,如下所示:
[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数据量来设置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;
如果recommended_innodb_buffer_pool_size返回已安装RAM的75%以上,则使用安装RAM的75%作为build议值。 如前所述,相应地设置innodb_log_file_size。
根据innodb_flush_method文档,使用O_DIRECT可以对性能产生积极或消极的影响
从文档引用:
根据硬件configuration,将innodb_flush_method设置为O_DIRECT可以对性能产生正面或负面影响。 基准您的特定configuration,以决定使用哪个设置。