InnoDB/MySQL中实际缓存了哪些数据?

InnoDB/MySQL中实际缓存了哪些数据?,mysql,caching,Mysql,Caching,我正在尝试优化数据库的性能。我的问题是-数据库内存中缓存了什么?例如: (表有两列:键(索引)、数据(未索引)更新(未索引) (数据库将进行扫描-扫描的行是否保留在内存中?) (数据库将引用索引-标识的行是否保留在内存中?Ming 这是一个棘手的问题。首先,你必须选择正确的引擎。如果你使用InnoDB,你可以设置缓冲池,所有的数据都会被缓存。什么数据?每个数据。数据,实际上,索引,表的元信息,等等。记住,对于InnoDB,缓冲池 对于MyISAM,缓存被分成不同的缓冲区。例如,您可以设置密钥缓冲

我正在尝试优化数据库的性能。我的问题是-数据库内存中缓存了什么?例如:

(表有两列:键(索引)、数据(未索引)更新(未索引)

(数据库将进行扫描-扫描的行是否保留在内存中?)

(数据库将引用索引-标识的行是否保留在内存中?

Ming

这是一个棘手的问题。首先,你必须选择正确的引擎。如果你使用InnoDB,你可以设置缓冲池,所有的数据都会被缓存。什么数据?每个数据。数据,实际上,索引,表的元信息,等等。记住,对于InnoDB,缓冲池

对于MyISAM,缓存被分成不同的缓冲区。例如,您可以设置密钥缓冲区大小,MyISAM将在那里缓存密钥信息

对于您的特定示例,在第一个查询中,它将扫描所有表。如果您有足够大的缓冲池,它将位于内存中。第二个查询也是如此

还有一件事,你应该为这种查询建立索引

有关缓冲池的有趣链接:


据我所知,使用innodb,索引和数据都将保存在内存中(如果innodb\u buffer\u pool\u size足够大)

Select * where updated=20100202
Select * where key = 20