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%。
我有点迷茫 这是怎么回事?
根据经验,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。