分析MySQL数据库查询的执行时间?

时间:2009-06-05 13:42:33

标签: mysql analysis

我正在使用带有phpMyAdmin的MySQL数据库作为前端(我不确定我是否有远程/客户端访问权限)。我有一个查询数据库的脚本,并希望查看每个查询需要多长时间?最简单的方法是什么?我可以在服务器上安装另一个PHP应用程序吗?

3 个答案:

答案 0 :(得分:1)

如果您有权访问MySQL配置文件,则可以启用general query logslow query log

有关详细信息,请参阅here

因为我认为5.1.6,你也可以在运行时做到这一点:

SET GLOBAL long_query_time = 10  /* which queries are considered long */
SET GLOBAL slow_query_log = 1

,但无论如何都要尝试,当它出现时我不记得确切的版本。

答案 1 :(得分:1)

对于我处理的大多数应用程序,我都包含可以在开发环境中轻松打开的查询概要分析输出。这将输出SQL,执行时间,堆栈跟踪和显示解释输出的链接。它还突出显示运行时间超过1秒的查询。

虽然你可能不需要那些复杂的东西,你可以通过在PHP中编写一个包装查询执行的函数,并在会话中存储调试信息(或者只是输出它)来获得对查询运行时间的相当好的理解。 )。例如:

function run_query($sql, $debug=false, $output=false) {
    $start = microtime(true);
    $q = mysql_query($sql);
    $time = microtime(true) - $start;

    if($debug) {
        $debug = "$sql<br/>$time<br/><br/>";
        if($output) {
            print $debug;
        } else {
            $_SESSION['sql_debug'] .= $debug;
        }
    }

    return $q;

 }

这只是一个粗略的想法。你可以根据需要调整它。

希望有所帮助 -

答案 2 :(得分:0)

您应该将long_query_time设置为1,因为将其设置为10将排除大多数(如果不是全部)查询。 在mysql提示符下输入

设置@@ long_query_time = 1;