mysql rows examined_有没有得到rows_examined在MySQL不慢日志的方法吗?(Is there a way t

我建立了一个家庭长大的应用中的一些个人资料信息。 我想调试页面显示以及有多少行,而不假设slow_log检查发送的查询被打开,更不用说解析它。

早在2006年,我想要的东西是不可能的 。 是真的还是今天?

我看到彼得·扎伊采夫有技术 ,操作如下:

运行FLUSH STATUS;

运行查询。

运行SHOW STATUS LIKE "Handler%";

然后在输出:

Handler_read_next = 42250表示该扫描期间42250行进行分析

这听起来像如果MySQL只考察指标,它应该给你多少。 但有一组状态瓦尔你可以查询,加起来并找出有多少行审查? 任何其他的想法?

Answer 1:

这略好于它在2006年可以前后发出SHOW会话状态,再看看每个Handler_read_ *的计算,以便能够告诉检查的行数。

真的没有其他办法。而服务器协议有一个标志说,如果发生了表扫描,它不公开rows_examined。 即使像MySQL的查询分析器工具通过运行SHOW会话状态前/后(虽然我认为这只是后运行SHOW会话状态,因为它会记住以前的值)的工作。

我知道这是不是与你原来的问题,但也有其他昂贵的组件来查询除了rows_examined。 如果您选择通过慢日志要做到这一点,你应该看看这个补丁:

http://www.percona.com/docs/wiki/patches:microslow_innodb#changes_to_the_log_format

我可以推荐寻找 “Disk_tmp_table:Yes” 和 “Disk_filesort:是的”。

Answer 2:

在5.6.3开始,MySQL的数据库performance_schema还公开声明统计,在诸如performance_schema.events_statements_current。

通过报表收集的统计数据包括“ROWS_EXAMINED”列。

见http://dev.mysql.com/doc/refman/5.6/en/events-statements-current-table.html

从那里,统计聚集提供摘要。

见http://dev.mysql.com/doc/refman/5.6/en/statement-summary-tables.html

Answer 3:

从文档 :

Handler_read_rnd

请求数读入基于一个固定位置的一行。 此值高,如果你做了很多需要结果的排序的查询。 你可能有很多需要MySQL来扫描整个表的查询,或者你有连接不正确使用的键。

Handler_read_rnd_next

请求数来读取数据文件的下一行。 此值高,如果你正在做大量的表扫描。 一般来说,这意味着你的表没有做好索引,或者你的查询语句没有使用好索引的优势。

read_rnd*指读取与全扫描实际的表行。

请注意,它会显示什么,如果有一个索引扫描与行查找相结合,它仍然被认为关键读。

对于这样的模式:

CREATE TABLE mytable (id INT NOT NULL PRIMARY KEY, data VARCHAR(50) NOT NULL)

INSERT

INTO mytable

VALUES …

SELECT id

FROM mytable

WHERE id BETWEEN 100 AND 200

SELECT *

FROM mytable

WHERE id BETWEEN 100 AND 200

,后者的两个查询都将返回1中read_key , 101在read_next和0在两个read_rnd和read_rnd_next ,尽管发生在第二查询实际行查找的事实。

Answer 4:

在前面加上解释查询。 在MySQL中,将显示查询的执行路径,这表检查以及检查每个表的行数。

这里的文档 。

文章来源: Is there a way to get rows_examined in MySQL without the slow log?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值