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

发布于 2024-07-23 10:46:45 字数 134 浏览 8 评论 0原文

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

I am using a MySQL database with phpMyAdmin as the frontend (I am not sure I have remote/client access yet). I have a script that queries the database and would like to see how long each query takes? What is the easiest way to do this? Could I install another PHP app on the server?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

塔塔猫 2024-07-30 10:46:45

如果您有权访问MySQL配置文件,则可以启用常规查询日志慢速查询日志

请参阅此处了解细节。

正如我所想,5.1.6,您也可以在运行时执行此操作:

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

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

If you have access to MySQL config files, you can enable general query log and slow query log.

See here for details.

Since, as I think, 5.1.6, you can also do it in runtime:

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

, but try it anyway, I don't rememeber exact version when it appeared.

无远思近则忧 2024-07-30 10:46:45

对于我处理的大多数应用程序,我都包含可以在开发环境中轻松打开的查询分析输出。 这会输出 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;

 }

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

希望有帮助 -

For most applications that I work on, I include query profiling output that can easily be turned on in the development environment. This outputs the SQL, execution time, stack trace and a link to display explain output. It also highlights queries running longer than 1 second.

Although you probably don't need something as sophisticated, you can get a fairly good sense of run time of queries by writing a function in PHP that wraps the query execution, and store debug information on the session (or simply output it). For example:

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;

 }

That's just kind of a rough idea. You can tweak it however you want.

Hope that helps -

想挽留 2024-07-30 10:46:45

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

输入 set @@long_query_time=1;

You should set long_query_time to 1 since setting it to 10 will exclude most if not all of your queries.
In the mysql prompt type

set @@long_query_time=1;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文