select正确的innodb_buffer_pool_size

我有一个24GB的机器运行MySQL(只有InnoDB表)。

我的innodb数据集是11.5GB大,我已经把我的innodb_buffer_pool_size设置为14GB,以允许一些增长。 所以整个innodb数据集被加载到内存中,这是很好的。

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

增加我的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 3 PowerOf1024) B; 

这将告诉你InnoDB缓冲池需要多大。 由于你只有24GB的安装内存,那么innodb_buffer_pool_size需要是18G(已安装RAM的75%)或查询的build议,以较小者为准。

增加我的innodb_buffer_pool_size是否是一个好主意,以便索引空间也适合?

是的,会的。

如果您的数据大小为11.5GB,并且索引超过了11GB,那么您的索引数据可能太多,或索引不正确,可能需要某人查看。