MySQL查询缓存和缓冲池的区别

一 缓冲池

在InnoDB存储引擎中,一部分数据会被放到内存中,缓冲池则占了这部分内存的大部分,它用来存储各种数据的缓存,包括:

数据页,插入缓存,自适应索引哈希,索引页,锁信息,数据字典信息等。

InnoDB存储引擎基于磁盘文件存储,访问物理硬盘和在内存中进行访问,速度相差很大,为了尽可能弥补这两者之间的I/O效率的差值,就需要把经常使用的数据加载到缓冲池中,避免每次访问都进行磁盘I/O.

缓冲池大小可以通过innodb_buffer_pool_size来查看和设置。

 

 

二 查询缓存

查询缓存是提前把查询结果缓存起来,这样下次不需要执行就可以直接拿到结果。需要说明的是,缓存的是查询对应的结果,而不是查询计划。这样就意味着查询匹配的鲁棒性大大降低,只有完全相同的查询操作才能命中。所以在MySQL8.0版本中已经弃用了查询缓存功能。

该功能可以通过have_query_cache来查看和设置。

你可能感兴趣的:(MySQL,缓冲池,查询缓存)