关于LRU链表
【摘要】 该位置在LRU列表长度的5/8处:innodb_old_blocks_pct 默认值是37,表示新读取的页插入到LRU列表尾端的37%的位置(差不多3/8的位置)。在innodb存储引擎中,把midpoint之后的列表称为old列表,之前的列表称为new列表。可以简单理解为new列表中的页都是最为活跃的热点数据。建议innodb_old_blocks_pct 调成20%(调整内存参数):(查...
该位置在LRU列表长度的5/8处:
innodb_old_blocks_pct 默认值是37,表示新读取的页插入到LRU列表尾端的37%的位置(差不多3/8的位置)。在innodb存储引擎中,把midpoint之后的列表称为old列表,之前的列表称为new列表。可以简单理解为new列表中的页都是最为活跃的热点数据。
建议innodb_old_blocks_pct 调成20%(调整内存参数):
(查官方手册,发现是全局动态变量。)
set @@global.innodb_old_blocks_pct=20;
这个参数用来表示 页读取到mid位置后,需要等待多久才会被加入到LRU列表的热端。
使LRU列表中的热点数据不被刷出:
set global innodb_old_blocks_time=1000;
- 1
放在冷热数据交界处,默认1000ms,过了这1s,还能存活下去,就调到热数据区了。
冷热数据区的监控
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
- youngs/s:坚持到了1s,进入了热数据区;
- non-youngs/s:没有坚持到1s,于是被刷出去了。
non-youngs/s的值过大原因
- 1.可能存在严重的全表扫描(频繁的被刷出来)
- 2.可能是pct设置的过小(冷数据区就很小,来一点数据就刷出去了)
- 3.可能是time设置的过大(没坚持到1万s,被刷出去了)
youngs/s的值过大的原因
正常不可能一直很高,因为热数据区就那么大,不可能一直往里调。
- 1.pct过大(pct过大,冷区大,热区小,time过小,就容易young进去。)
- 2.time过小
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)