将导致 php 脚本运行缓慢的原因添加到 mysql-slow.log

将导致 php 脚本运行缓慢的原因添加到 mysql-slow.log

如果你启用了

log_slow_queries = /var/log/mysql/mysql-slow.log

/etc/my.cnf or /etc/mysql/my.cnf

那么将记录所有花费时间比设置时间更长的查询long_query_time

在托管许多网站的服务器上,您将获得显示哪个主机在哪个时间导致的条目,其形式如下:

# Time: 130508  0:04:07
# User@Host: dbuser[dbhost] @ localhost []
# Query_time: 9.354343  Lock_time: 0.000094 Rows_sent: 0  Rows_examined: 1
use database_name;
SET timestamp=1367964247;
UPDATE some_table SET something='some data'

但缺少了最重要的信息:哪个脚本调用了该查询?并且同一脚本中的多个慢查询不会及时累积,因此进行分析并自动找出脚本名称会很有用。

是否可以将 PHP 脚本名称添加到该日志中?

或者也许以某种方式将不同的日志以某种方式组合在分析脚本中,从而找出在调用慢查询期间调用了哪个脚本?

答案1

MySQL 无法知道正在运行的 PHP 脚本。它只知道它从用户名、密码、主机获得了连接,并被要求进行一些查询。因此它会记录可用的内容。

如果您是开发人员,那么您应该对您的应用程序足够熟悉,能够在几秒钟内找到发出查询的代码。如果您不是开发人员,或者不熟悉该应用程序,请尝试grep。或者联系熟悉该应用程序的开发人员。

答案2

您可以将注释附加到您的查询中,这将完成工作:

SELECT * FROM table # php file ./path/to/file.php

相关内容