mysql缓冲池很大,但数据读取仍然比较慢,应该怎么做?

使用MariaDB 10.0.2,使用 innodb存储引擎,数据库本身只有10个g,但数据库缓冲池(innodb_buffer_pool)已经设置为12g, 缓冲池实例开了两个.但是在查询的时候千万级的表读取仍然需要较久.
我在考虑是否数据并未完全进入到缓冲池中?还是说数据因为设置问题(比如我记得有一些参数控制数据在缓冲池中的表现,到了缓冲池LRU列表的 3/8 那里必须停留一段时间才能成为头部热数据等类似这种设置)导致的这种明明内存足够大,DB表现却并不好的情况?
所以我想请教大神,是否我有一些相关配置参数我没有考虑到,导致即使高内存还是没有更好的表现?还是说是其他问题,请大佬赐教接下来的思路和方案,感谢!

阅读 3.5k
1 个回答

如果是大表查询慢,重点是看查询语句的执行计划,数据库缓冲池的大小并不是最重要的影响因素。
建议重点排查几点:
1、查询条件的字段,是否有合适的索引
2、是否关联了过多的表
3、能否去掉不必要的排序操作

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题