Mysql MariaDB:性能监控

Mysql MariaDB:性能监控,mysql,performance,mariadb,monitoring,heidisql,Mysql,Performance,Mariadb,Monitoring,Heidisql,我想监控不同查询的性能(持续时间)。一个简单的方法是查看HeidiSQL的输出。例如,此简单查询: SELECT COUNT(*) FROM db.patient; 在HeidiSQL GUI上提供以下输出: /* Betroffene Zeilen: 0 Gefundene Zeilen: 1 Warnungen: 0 Dauer von 1 Abfrage: 6.022

我想监控不同查询的性能(持续时间)。一个简单的方法是查看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个查询,所以手动执行(检索这三个数字)非常麻烦。此外,我必须运行每个查询allone来获取每个查询的信息。如果我运行几个查询,我只得到整个运行的信息

我的想法是使用脚本(例如Perl、Python)从日志文件中检索信息。但存在以下问题:

  • 我找不到包含HeidiSQL生成的相同信息的日志文件(受影响和定位的行数和持续时间)。例如,日志文件WS20104444-2.log(常规日志)只显示查询,而不显示时间和其他信息。我从哪里可以从MariaDB获得与HeidiSQL相同的信息
  • 由于我希望每个查询都有这些信息,但不希望单独运行每个查询,因此我必须添加一个生成这些信息的查询:

    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)的东西吗

  • 我正在Windows7上使用10.2.11-MariaDB(即将赢得10)

    谢谢你的建议。

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


    slowlog的
    long\u query\u time
    设置为1.0(或更少)是一个很好的工具。然后使用
    pt query digest
    汇总数据。默认情况下,它会首先列出“最差”的查询。

    “我想监控不同查询的性能(持续时间)。一个简单的方法是查看HeidiSQL的输出。”。。“我建议你去看看。”雷蒙德:看起来不错。我成功地生成了文件(
    SET
    ),但在我运行查询时它不会收集信息。所以,我必须看看发生了什么。不过,谢谢你的建议,我认为这是正确的选择。