选择正确的 innodb_buffer_pool_size

Mr.*_*oon 6 mysql innodb tuning

我有一台运行 MySQL 的 24GB 机器(仅限 InnoDB 表)。

我的 innodb 数据集有 11.5GB 大,我已将 innodb_buffer_pool_size 设置为 14GB 以允许一些增长。所以整个innodb数据集都加载到了ram中,很好。

但是今天我注意到我的索引大小也超过了 11GB。

增加我的 innodb_buffer_pool_size 以便索引空间也适合吗?或者与此无关?

Rol*_*DBA 9

不要忘记 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 3 PowerOf1024) B;
Run Code Online (Sandbox Code Playgroud)

这将告诉您 InnoDB 缓冲池需要多大。由于您只有 24GB 的已安装 RAM,因此 innodb_buffer_pool_size 需要为 18G(已安装 RAM 的 75%)或查询的建议,以较小者为准。