首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在共享宿主MySQL中记录慢速查询?

如何在共享宿主MySQL中记录慢速查询?
EN

Stack Overflow用户
提问于 2010-04-17 17:59:11
回答 4查看 2.7K关注 0票数 6

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

所以我的问题是:

如何在这些代码中记录缓慢的查询?:

  • 无法更改my.cnf以启用慢速查询日志
  • 无法将统计脚本更改为其他
  • 不知道scrpt是如何编写的,也不知道在哪里发出mysql命令
  • 无法向我的提供程序请求缓慢的查询日志

有什么方法可以简单、简单、快速地做到这一点吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-17 18:07:20

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

代码语言:javascript
复制
$before = time();
//run your query
$after = time();
$difference = $after - $before
if($difference > 5000)
   //Log query

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

希望这会有所帮助:)

票数 4
EN

Stack Overflow用户

发布于 2010-04-17 19:43:31

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

代码语言:javascript
复制
// 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可能是一个很好的起点,所以我会尝试打开调试模式。

票数 3
EN

Stack Overflow用户

发布于 2010-04-17 21:13:58

是否将数据转储传输到可以激活慢速查询日志的本地测试系统?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2659422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档