使用MariaDB 10.0.2,使用 innodb存储引擎,数据库本身只有10个g,但数据库缓冲池(innodb_buffer_pool)已经设置为12g, 缓冲池实例开了两个.但是在查询的时候千万级的表读取仍然需要较久.
我在考虑是否数据并未完全进入到缓冲池中?还是说数据因为设置问题(比如我记得有一些参数控制数据在缓冲池中的表现,到了缓冲池LRU列表的 3/8 那里必须停留一段时间才能成为头部热数据等类似这种设置)导致的这种明明内存足够大,DB表现却并不好的情况?
所以我想请教大神,是否我有一些相关配置参数我没有考虑到,导致即使高内存还是没有更好的表现?还是说是其他问题,请大佬赐教接下来的思路和方案,感谢!
如果是大表查询慢,重点是看查询语句的执行计划,数据库缓冲池的大小并不是最重要的影响因素。
建议重点排查几点:
1、查询条件的字段,是否有合适的索引
2、是否关联了过多的表
3、能否去掉不必要的排序操作