如何判断mysql索引是否完全适合内存

时间:2012-07-31 20:38:35

标签: mysql sql indexing

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

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

2 个答案:

答案 0 :(得分:20)

取决于存储引擎

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不超过75%的RAM。

答案 1 :(得分:2)

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

key_buffer_size = 264M

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