常见问题
一、查询缓存和缓冲池
1、缓冲池
- 用于加速数据的修改和访问,通过将热点数据缓存在内存,最大限度的减少磁盘I/O
- 默认大小为128M,Buffer Pool中数据以页为存储单位,其实现的数据结构是以页为单位的单链表
- 由于内存的空间限制,Buffer Pool仅能容纳最热点的数据
- Buffer Pool使用LRU算法淘汰非热点数据页
2、查询缓存和缓冲池的区别
- 查询缓存是把缓存结果缓存起来,也就意味着只有相同的查询操作才会命中查询缓存,而且更新操作就会破坏缓存,因此Mysql的查询缓存命中率不高,在Mysql8.0中已经弃用了查询缓存
- 缓冲池的作用是把数据页放到缓冲池中,这样在读取或修改数据的时候可以更新或者查找缓冲池中的数据,数据页中包含了很多行数据,即使这次没用到,下次也可能会用到
- 缓冲池并不等于查询缓存,它们都是通过缓存的机制来提升效率,但缓冲池服务于数据库整体的I/O操作,而查询缓存服务于Sql查询和查询结果集的,因为命中条件苛刻,只要数据表