MySQL状态变量Handler_read_rnd_next正在增长很多
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL状态变量Handler_read_rnd_next正在增长很多,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1649字,纯文字阅读大概需要3分钟。
内容图文
在MYSQL状态下,Handler_read_rnd_next值非常高.
我知道,当执行没有正确索引的查询时,此值将增加.
但是,即使我们执行像’Handler_read_rnd_next’这样的show status,这个值也会增加2.
根据此状态标志,我们正在监控一些统计信息.
所以每一次,这些统计数据都显得至关重要.
我们可以从’Handler_read_rnd_next’计数中排除这些’show’执行计数.
还有一个例子,
有一个包含10行的表,表在列’data’上建立索引,如果我们执行以下查询:
select data from test where data = 'vwx' -> returns one row
如果我们检查’Handler_read_rnd_next’的值,它会增加7.
以下是上述查询的explain命令的结果:
explain select data from test where data = 'vwx';
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, 'SIMPLE', 'test', 'ref', 'data', 'data', '35', 'const', 1, 'Using where; Using index'
有没有办法限制这个值,或者我可以知道为什么这个值会非常快地增加.
解决方法:
首先,让我们看一下Handler_read_rnd_next的定义.
根据Handler_read_rnd_next上的MySQL Documentation:
The number of requests to read the next row in the data file. This
value is high if you are doing a lot of table scans. Generally this
suggests that your tables are not properly indexed or that your
queries are not written to take advantage of the indexes you have.
现在,看看你的查询:
select data from test where data = 'vwx';
你说那个表有10行.根据经验,如果需要检查的行数大于总行数的5%,MySQL Query Optimizer将忽略索引的使用.
我们来算一算. 10行中的5%是0.5行.即使需要定位数据的行数为1,也就是大于0.5.基于这个较低的行数和我刚才提到的索引规则,MySQL Query Optimizer将始终进行表扫描.
由于列数据本身已编入索引,而不是表扫描,因此mysql执行了索引扫描.
如果您确定测试表永远不会增长,则可以删除所有索引并进行表扫描.处理程序状态变量应该停止递增.
内容总结
以上是互联网集市为您收集整理的MySQL状态变量Handler_read_rnd_next正在增长很多全部内容,希望文章能够帮你解决MySQL状态变量Handler_read_rnd_next正在增长很多所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。