繁体   English   中英

如何在共享主机MySQL中记录慢查询?

[英]How to log slow queries in shared hosting MySQL?

我有一个共享主机,我有我的网站和MySQL数据库。 我已经安装了一个用于统计的开源脚本(phpMyVisites),并且它最近开始工作得非常慢。 它是使用某种框架编写的,并且有许多PHP文件。 我知道要查找慢查询,我可以在MySQL中使用慢查询日志功能。 但是在这个共享主机上我不能使用这种方法因为我无法改变my.cnf。 我不想将我的统计脚本更改为其他脚本,我不想乱用此脚本的所有文件来找出将诊断代码手动记录到哪里的诊断代码。 我想在不改变PHP代码的情况下这样做。

所以我的问题是:

如何在这些编码中记录慢查询?:

  • 无法更改my.cnf以启用慢查询日志
  • 无法将统计脚本更改为其他
  • 不知道如何编写scrpt以及发出mysql命令的位置
  • 无法向我的提供商询问慢查询日志

有简单,方便,快捷的方法吗?

嗯,也许做一个函数来检查sql查询在返回值之前花了多长时间? 然后,如果它超过指定的数量记录它...例如在PHP我会这样做

$before = time();
//run your query
$after = time();
$difference = $after - $before
if($difference > 5000)
   //Log query

这模仿了slog查询记录器,我不认为这是一种在共享主机上启用它的方法。

希望这可以帮助 :)

我快速浏览了一下phpMyVisites。 在config.inc.php中,我发现了以下内容:

// Other
if(!defined('DEBUG')) define('DEBUG', false);
define('DEFAULT_ACTION', false);

error_reporting( E_ALL );

if(DEBUG)
{
    define('PRINT_TIME', false);
    define('PRINT_QUERY_COUNT', true);
    define('SAVE_DB_LOG', true);
    define('PRINT_QUERY', true);
} 

我怀疑SAVE_DB_LOG可能是一个很好的起点,所以我会尝试打开DEBUG模式。

是否将数据转储传输到本地测试系统,您可以在其中激活慢查询日志选项?

在慢速脚本运行时,您可以编写一个监视mysql 进程列表的脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM