30

有没有办法确定 mysql 索引是否完全适合可用内存?如果是这样,我将如何:

  • 确定mysql索引的大小
  • 确定应用程序的可用内存
  • 确定索引是否完全适合内存
4

2 回答 2

28

取决于存储引擎

MyISAM(缓存来自 .MYI 文件的索引页面)

SELECT FLOOR(SUM(index_length)/POWER(1024,2)) IndexSizesMB
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','performance_schema','mysql');

从 中减去key_buffer_size。如果答案 > 0,那么是

InnoDB(缓存数据和索引页面)

SELECT FLOOR(SUM(data_length+index_length)/POWER(1024,2)) InnoDBSizeMB
FROM information_schema.tables WHERE engine='InnoDB';

从 中减去innodb_buffer_pool_size。如果答案 > 0,那么是

我在DBA StackExchange上写过这个

在专用数据库服务器上,确保InnoDBSizeMB+IndexSizesMB不超过 RAM 的 75%。

于 2012-07-31T20:48:07.240 回答
2

要查找 MySQL 可用的内存,请查看my.cnf,可能位于:/etc/mysql/my.cnf

key_buffer_size = 264M

要查找表的索引大小:SHOW TABLE status FROM [DBNAME]

于 2012-07-31T20:44:19.847 回答