2014-03-24 86 views
0

从MySQL以外,我知道我可以做很多事情来了解进程的CPU使用情况,即。 top检查MySQL CPU使用情况(内部)

但是,从内部角度来看,我想知道是否可以从MySQL运行查询来知道系统CPU是什么或者当前线程的CPU消耗。

我每天晚上通过事件调度器运行大量查询,并且我的数据库服务器在100%CPU停留几分钟,阻止或减慢全球用户的速度。

我试图研究一种方法来限制线程或用户的CPU使用率,但它似乎还不可能。

所以,我试图做沿着我的事件以下线的东西:

IF (SELECT CPU_USAGE() > 0.8) THEN 
    REPEAT 
     SLEEP(0.01); 
    UNTIL (SELECT CPU_USAGE() < 0.25) 
    END REPEAT; 
END IF; 

显然CPU_USAGE()不存在,但如果有类似的东西,我可以做以实现类似效果,我都耳熟能详。谢谢。

P.S.我在亚马逊RDS

+0

限制您的任务在给定时间可以使用的线程数可能会更容易/更好。 – Vatev

+0

这将如何处理? –

回答

1

恐怕在MySQL中原生没有这样的选项选择选项。

如果你是在mysql客户端命令行中,你可以使用这个命令在MySQL客户端中调用“top”命令:\! top,但我不认为这是你需要的。

最好的答案可能是使用SYS函数的UDF。更多信息here。我没有使用它的经验,但它似乎最接近你所需要的。

+0

这在理想的情况下或许在将来会很棒,但我在Amazon RDS上,但不幸的是我不能导入这些UDF。 –