我正在使用带有 phpMyAdmin 作为前端的 MySQL 数据库(我不确定我是否有远程/客户端访问权限)。我有一个查询数据库的脚本,想看看每个查询需要多长时间?最简单的方法是什么?我可以在服务器上安装另一个 PHP 应用程序吗?
问问题
2911 次
3 回答
2
对于我从事的大多数应用程序,我包含了可以在开发环境中轻松打开的查询分析输出。这会输出 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;
}
这只是一个粗略的想法。你可以随意调整它。
希望有帮助-
于 2009-06-05T14:05:32.100 回答
2
如果您有权访问MySQL
配置文件,则可以启用general query log
和slow query log
.
有关详细信息,请参见此处。
因为,我认为,5.1.6
您也可以在运行时执行此操作:
SET GLOBAL long_query_time = 10 /* which queries are considered long */
SET GLOBAL slow_query_log = 1
,但还是试试吧,我不记得它出现时的确切版本。
于 2009-06-05T13:46:37.693 回答
1
您应该将 long_query_time 设置为 1,因为将其设置为 10 将排除大部分(如果不是全部)查询。在 mysql 提示符下输入
设置@@long_query_time=1;
于 2009-07-30T15:51:34.083 回答