MySQL 如何在不将查询结果输出到控制台的情况下检查MySQL查询所用的时间

MySQL 如何在不将查询结果输出到控制台的情况下检查MySQL查询所用的时间

在开发或运维过程中,我们常常需要执行MySQL查询并统计其运行时间。但是默认情况下,MySQL只会将查询结果输出到控制台,无法直接获得其运行时间。这时,我们可以使用MySQL提供的一些工具或技巧来实现这个需求。

阅读更多:MySQL 教程

方案一:使用MySQL内置命令

MySQL内置了一个名为“\timing”的命令,能够将当前会话中执行的每个SQL语句的执行时间输出到控制台。这种方式可以帮助我们快速地了解SQL查询的性能。

mysql> \timing

执行该命令后,MySQL会在控制台输出类似下面的信息:

Timing is ON.

mysql> SELECT * FROM my_table;
+----+--------+
| id |  name  |
+----+--------+
| 1  | Alice  |
| 2  | Bob    |
+----+--------+
2 rows in set (0.001 sec)

其中,“2 rows in set (0.001 sec)”中的“0.001 sec”就是该SQL语句的执行时间。

方案二:使用MySQL Profiler

MySQL Profiler是一个适用于MySQL 5.x版本的性能分析工具,可以用于收集查询的执行时间,并把这些数据存储在一个特殊的表中,以便随后进行分析。

在使用MySQL Profiler之前,需要先创建一个名为“Profiler”的数据库,并创建一个名为“query_time”的表:

CREATE DATABASE Profiler;
USE Profiler;
CREATE TABLE query_time (
    id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    query_text TEXT NOT NULL,
    execute_time FLOAT(5,3) NOT NULL,
    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

然后在MySQL配置文件中添加以下内容:

[mysqld]
# 开启general_log
general_log = 1
# 记录日志文件的位置
general_log_file = /var/log/mysql/mysql.log 
# 打印查询和执行时间
log_output = FILE
log_queries_not_using_indexes = ON

接下来,重启MySQL,并执行以下SQL语句开启查询分析:

SET GLOBAL log_queries_not_using_indexes = On;
SET GLOBAL general_log = Off;
SET GLOBAL general_log = On;

之后,所有执行的SQL语句和执行时间信息都会被记录到“/var/log/mysql/mysql.log”文件中。我们可以定期将其中的数据导入到“Profiler”库中:

LOAD DATA INFILE '/var/log/mysql/mysql.log'
INTO TABLE query_time
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
(`event_time`, `user_host`, `thread_id`, `server_id`, `command_type`, `query_text`);

最后,我们可以通过以下SQL语句查询该表中的数据,得到我们所需的查询执行时间:

SELECT query_text, execute_time
FROM query_time
WHERE query_text LIKE 'SELECT%'
ORDER BY create_time DESC;

方案三:使用MySQL的CLI工具

MySQL的CLI工具中提供了一个“–show-warnings”命令参数,当其被设定为“–show-warnings=1”时,可以在结果集后显示查询执行的时间信息。

mysql -u root -p --show-warnings=1 -e "SELECT * FROM my_table;"

执行后,MySQL会输出类似下面的信息:

id     name
1      Alice
2      Bob
2 row(s) in 0.002 sec

其中,“2 row(s) in 0.002 sec”就是该SQL语句的执行时间。

结论

通过以上三种方式,我们可以很方便地获取MySQL查询的执行时间,使得开发人员和运维人员能够更好地掌控系统运行情况。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程