我在 .sql 文件中有一些基准查询。如果我在 mysql 中使用 source 来执行它们,mysql 将在每次查询后显示运行时间。并且有页面和页面查询输出。有什么方法可以获得所有查询的总运行时间?
非常感谢!
我在 .sql 文件中有一些基准查询。如果我在 mysql 中使用 source 来执行它们,mysql 将在每次查询后显示运行时间。并且有页面和页面查询输出。有什么方法可以获得所有查询的总运行时间?
非常感谢!
您可以通过将此行添加到您的以下来使用 MySQL 的内置分析支持my.cnf
:
SET profiling=1;
这使您可以轻松查看每个查询所花费的时间:
mysql> SHOW PROFILES;
+----------+-------------+-------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+-------------+-------------------------------------------------------------------+
| 1 | 0.33174700 | SELECT COUNT(*) FROM myTable WHERE extra LIKE '%zkddj%' |
| 2 | 0.00036600 | SELECT COUNT(id) FROM myTable |
| 3 | 0.00087700 | CREATE TEMPORARY TABLE foo LIKE myTable |
| 4 | 33.52952000 | INSERT INTO foo SELECT * FROM myTable |
| 5 | 0.06431200 | DROP TEMPORARY TABLE foo |
+----------+-------------+-------------------------------------------------------------------+
5 rows in set (0.00 sec)
您可以将时间相加以获得总时间:
SELECT SUM(Duration) from information_schema.profiling;
您可以在此处找到有关 MySQL 分析的更多详细信息。
您可以采用另一种方法来运行从命令行执行 SQL 查询并使用 Unixtime
命令来计时执行。但是,这可能不会给您最精确的时间。此外,除非您将它与 MySQL 分析结合使用,否则它不会为您提供每个查询所用时间的细分。
您可以修改您的 .sql 以创建带有时间戳的开始和结束行,然后减去,而无需拿出 Excel 电子表格并将其相加。
感谢所有的建议。我最终创建了另一个表,只是为了在 .sql 文件中记录每个查询的开始和结束时间。
我编辑了 .sql 文件,在每个原始查询之后添加了一个插入语句,只是为了记录时间。最后,我可以查询这个“时间”表来分析 .sql 文件的执行情况。