我有一个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,那么您的索引数据可能太多,或索引不正确,可能需要某人查看。