MySQL总时间SHOW PROFILE与SHOW PROFILES不同

问题描述

有人可以帮我解决这个问题吗?

当我执行命令SHOW PROFILES时,我得到的持续时间与命令SHOW PROFILES(不带“ S”)不同,在这种情况下,我必须考虑哪个?

例如: 对于显示配置文件

query  | DURATION
53       0.08104775 

关于INFORMATION_SCHEMA.PROFILING(显示配置文件)

SET @query_id := 53;
 SELECT SUM(Total_R) FROM (
SELECT STATE,SUM(DURATION) AS Total_R,ROUND(
          100 * SUM(DURATION) /
             (SELECT SUM(DURATION)
              FROM INFORMATION_SCHEMA.PROFILING
              WHERE QUERY_ID = @query_id
          ),2) AS Pct_R,COUNT(*) AS Calls,SUM(DURATION) / COUNT(*) AS "R/Call"
    FROM INFORMATION_SCHEMA.PROFILING
    WHERE QUERY_ID = @query_id
    GROUP BY STATE 
    ORDER BY Total_R DESC ) AS X ;

enter image description here

query  | TOTAL DURATION
53       0.000430

我对于哪个时间是正确的时间感到困惑。

解决方法

一个简单的 SUM(...) 查询似乎提供与 SHOW PROFILES“duration”列几乎相同的值:

mysql> SET profiling = 1;
mysql> SELECT SQRT(100);
+-----------+
| SQRT(100) |
+-----------+
|        10 |
+-----------+
1 row in set (0.02 sec)

mysql> SHOW PROFILES;
+----------+------------+------------------+
| Query_ID | Duration   | Query            |
+----------+------------+------------------+
|        1 | 0.00010700 | SELECT SQRT(100) |
+----------+------------+------------------+
1 row in set,1 warning (0.01 sec)

mysql> SELECT SUM(DURATION) FROM information_schema.PROFILING WHERE QUERY_ID = 1;
+---------------+
| SUM(DURATION) |
+---------------+
|      0.000108 |
+---------------+

(在 MySQL 5.1 和 Percona 8.0 上测试)

我还不明白分析持续时间值(0.000107 和 0.000108)与查询结果正下方报告的时间(“集合中的 1 行(0.02 秒)”)之间的区别。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...