【发布时间】:2019-12-16 05:41:30
【问题描述】:
我想监控不同查询的性能(持续时间)。一个简单的方法是查看 HeidiSQL 的输出。例如,这个简单的查询:
SELECT COUNT(*) FROM db.patient;
在 HeidiSQL-GUI 上给我以下输出:
/* Betroffene Zeilen: 0 Gefundene Zeilen: 1 Warnungen: 0
Dauer von 1 Abfrage: 6.022 Sek. */
获取此输出后,我将时间 (6.022)、受影响的行数 (0) 和定位的行数 (1) 复制/粘贴到 Excel 中。 我想定期执行此操作以控制查询的持续时间。如果持续时间变得至关重要,我想分析需要更改代码的哪一部分以获得更好的性能。
由于我的 sql 代码在各种脚本中(10 个脚本)并且包含每 5 到 20 个查询,因此手动执行此操作(检索这三个数字)非常麻烦。此外,我必须单独运行每个查询以获取每个查询的信息。如果我运行多个查询,我只会得到整个运行的信息。
我的想法是使用脚本(例如 Perl、Python)从日志文件中检索信息。但存在以下问题:
- 我找不到包含与 HeidiSQL 生成的信息相同的日志文件(受影响和定位的行数和持续时间)。例如,日志文件 WS20104444-2.log(通用日志)只显示查询,不显示时间等信息。从哪里可以获得与 HeidiSQL 相同的 MariaDB 信息?
-
由于我想要每个查询的这些信息,但不想单独运行每个查询,因此我应该添加一个生成这些信息的查询:
SELECT * INTO OUTFILE 'path\log.txt' FROM (SELECT COUNT(*) FROM table); UPDATE table SET var = 1 WHERE x = 'a'; -- (1) query which retrieves affected and located number of rows and time and stores in a log.txt INSERT INT table SELECT * FROM stage; -- (1) query which retrieves affected and located number of rows and time and stores in a log.txt有类似(1)的东西吗?
我正在 Windows 7(即将推出 Win 10)上使用 10.2.11-MariaDB。
感谢您的任何想法。
【问题讨论】:
-
“我想监控不同查询的性能(持续时间)。一个简单的方法是查看 HeidiSQL 的输出” MariaDB 支持 Slow Query Log ..我建议检查一下。
-
@Raymond 看起来不错。我成功生成了文件 (
SET),但是当我运行查询时它不会收集信息。所以,我必须看看发生了什么。但是,感谢您的建议,我认为这是要走的路。
标签: mysql performance mariadb monitoring heidisql