[英]Analyze execution time of queries on MySQL database?
我正在将MySQL数据库与phpMyAdmin作为前端使用(我不确定我是否具有远程/客户端访问权限)。 我有一个查询数据库的脚本,想查看每个查询花费多长时间? 最简单的方法是什么? 我可以在服务器上安装另一个PHP应用程序吗?
如果您有权访问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
,但还是请尝试一下,当它出现时,我不记得确切的版本。
对于我正在处理的大多数应用程序,我都包括查询概要分析输出,可以在开发环境中轻松打开该查询概要输出。 这将输出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;
}
那只是一个粗略的主意。 您可以根据需要进行调整。
希望有帮助-
您应该将long_query_time设置为1,因为将其设置为10将会排除大部分(如果不是全部)查询。 在mysql提示符下输入
设置@@ long_query_time = 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.