各位用户为了找寻关于关于对mysql语句进行监控的方法详解的资料费劲了很多周折。这里教程网为您整理了关于关于对mysql语句进行监控的方法详解的相关资料,仅供查阅,以下为您介绍关于关于对mysql语句进行监控的方法详解的详细内容
快速阅读
为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。
我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以方便调试bug 或者确认最终生成的sql语句
为什么要监控sql语句?
因为程序大了以后,sql语句有可能被多个地方调用 。你不能确认当前时间是不是只执行了你需要的那条语句 。 有的持久层框架采用linq的语法来写sql , 程序中不方便输出sq语句 线上运行的程序,没有办法更改程序。但需要确认问题出错在哪里?执行了哪些sql语句。可以根据sql 语句来判断 出错的地方。如何在mysql中监控sql语句?
默认mysql是不开启的sql语句监控的,当需要开启的时候 ,执行以下命令。
? 1 2show variables
like
"general_log%"
;
-- off 是关闭,如果是on表示已经开启
set
global
general_log =
'on'
;
--开启日志监控。
我是已经开启的状态 ,如果没有开启的时候 ,general_log 是显示的off .
如下图所示 ,会看到日志默认保存的路径 位置
c:programdatamysqlmysql server 5.5datahcb-pc.log
接下来我们执行几条sql语句来查看
执行sql
? 1 2select
*
from
`platform`
update
`platform`
set
platform_type=2
where
id=1
接下来我们去看下日志
可以看到日志中包含了
time id command argument
分别对应时间 ,id, 命令, 参数
参数指的就是执行的sql语句。
如何让mysql中的sql语句显示在表中
在日志中查看不方便 ,如果让sql语句显示在数据库中的一个表中?
执行如下sql
? 1 2set
global
log_output =
'table'
;
select
*
from
mysql.general_log
order
by
event_time
desc
用processlist显示
? 1 2use `information_schema`;
select
*
from
processlist
where
info
is
not
null
;
具说这种方式可以实时显示,但是我的不知道为啥不能实时显示新的sql 先记录一下。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
原文链接:http://www.hechunbo.com/index.php/archives/178.html