有没有办法确定 mysql 索引是否完全适合可用内存?如果是这样,我将如何:
- 确定mysql索引的大小
- 确定应用程序的可用内存
- 确定索引是否完全适合内存
取决于存储引擎
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,那么是
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%。
要查找 MySQL 可用的内存,请查看my.cnf
,可能位于:/etc/mysql/my.cnf
key_buffer_size = 264M
要查找表的索引大小:SHOW TABLE status FROM [DBNAME]