【问题标题】:MariaDB: Performance monitoringMariaDB:性能监控
【发布时间】: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)从日志文件中检索信息。但存在以下问题:

  1. 我找不到包含与 HeidiSQL 生成的信息相同的日志文件(受影响和定位的行数和持续时间)。例如,日志文件 WS20104444-2.log(通用日志)只显示查询,不显示时间等信息。从哪里可以获得与 HeidiSQL 相同的 MariaDB 信息?
  2. 由于我想要每个查询的这些信息,但不想单独运行每个查询,因此我应该添加一个生成这些信息的查询:

    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


【解决方案1】:

(这并没有回答所提出的问题,而是解决了“真正的”问题。)

long_query_time 设置为 1.0(或更低)的慢速日志是一个出色的工具。然后使用pt-query-digest 汇总数据。默认情况下,它将首先列出“最差”的查询。

【讨论】:

    猜你喜欢
    • 2020-04-16
    • 2021-06-13
    • 2011-11-09
    • 1970-01-01
    • 2012-03-06
    • 2010-09-07
    • 2012-06-26
    • 2019-07-14
    • 2013-11-15
    相关资源
    最近更新 更多