- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在为自己开发的应用构建一些配置文件信息。我希望调试页面显示发送的查询以及检查了多少行,而不假设 slow_log 已打开,更不用说解析它了。
回到 2006 年,我想要的是 not possible .今天仍然如此吗?
我看到 Peter Zaitsev 有一个 technique你在哪里:
FLUSH STATUS;
SHOW STATUS LIKE "Handler%";
然后在输出中:
Handler_read_next=42250 means 42250 rows were analyzed during this scan
这听起来好像如果 MySQL 只检查索引,它应该给你这个数字。但是是否有一组状态变量可以轮询、加起来并找出检查了多少行?还有其他想法吗?
最佳答案
它比 2006 年稍微好一些。您可以在之前和之后发出 SHOW SESSION STATUS,然后查看每个 Handler_read_* 计数,以便能够判断检查的行数。
真的没有其他办法.. 虽然服务器协议(protocol)有一个标志来说明是否发生了表扫描,但它不会公开 rows_examined。即使像 MySQL 的查询分析器这样的工具也必须通过在之前/之后运行 SHOW SESSION STATUS 来工作(尽管我认为它只在 之后 运行 SHOW SESSION STATUS,因为它会记住以前的值)。
我知道这与您原来的问题无关,但除了 rows_examined 之外,还有其他昂贵的查询组件。如果您选择通过慢速日志执行此操作,您应该查看此补丁:
http://www.percona.com/docs/wiki/patches:microslow_innodb#changes_to_the_log_format
我建议寻找“Disk_tmp_table:是”和“Disk_filesort:是”。
关于mysql - 有没有办法在没有慢日志的情况下在 MySQL 中获取 rows_examined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637715/
我是一名优秀的程序员,十分优秀!