MySQL的查询缓存和Buffer Pool
如果将MySQL分成 Server层和存储引擎层两大部分,那么Caches位于Server层。当一个SQL打向MySQL Server之后,MySQL Server首选会从查询缓存中查看是否曾经执行过这个SQL,如果曾经执行过的话,之前执行的查询结果会以Key-Value的形式保存在查询缓存中。key是SQL语句,value是查询结果。如果查询缓存中没有你要找的数据的话,MySQL才会执行后续的逻辑,通过存储引擎将数据检索出来。并且查询缓存会被shared cache for sessions,是的,它会被所有的session共享。并且在mysql8.0的版本中,已经将查询缓存模块删除了。所以,你可以根据自己的情况考虑一下有没有必要禁用个功能还是那句话:如果将MySQL分成 Server层和存储引擎层两大部分,那么Buffer Pool位于存储引擎层。而Buffer Pool就是MySQL存储引擎为了加速数据的读取速度而设计的缓冲机制。