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

Dav*_*542 24 mysql sql indexing

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

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

Rol*_*DBA 22

取决于存储引擎

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');
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

我在DBA StackExchange中写过这篇文章

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