为什么要监控sql语句?如何监控?

01 为什么要监控sql语句?

① 因为程序大了以后,sql语句有可能被多个地方调用 。你不能确认当前时间是不是只执行了你需要的那条语句 。

② 有的持久层框架采用linq的语法来写sql , 程序中不方便输出sq语句

③ 线上运行的程序,没有办法更改程序。但需要确认问题出错在哪里?执行了哪些sql语句。可以根据sql 语句来判断 出错的地方。

02 如何在mysql中监控sql语句?

默认mysql是不开启的sql语句监控的,当需要开启的时候 ,执行以下命令。

SHOWVARIABLESLIKE"general_log%";

-- off 是关闭,如果是on表示已经开启

SETGLOBALgeneral_log ='ON';

--开启日志监控。

我是已经开启的状态 ,如果没有开启的时候 ,general_log 是显示的off .

如下图所示 ,会看到日志默认保存的路径 位置

C:\ProgramData\MySQL\MySQL Server 5.5\Data\hcb-PC.log

 
 

接下来我们执行几条sql语句来查看

执行sql

SELECT* FROM `platform` UPDATE `platform` SET platform_type=2 WHERE id=1

接下来我们去看下日志

 
 

可以看到日志中包含了

TimeId Command Argument

分别对应时间 ,id, 命令, 参数

参数指的就是执行的sql语句。

03 如何让mysql中的sql语句显示在表中?

在日志中查看不方便 ,如果让sql语句显示在数据库中的一个表中?

(1)执行如下sql

SET GLOBAL log_output ='TABLE';

SELECT* FROM mysql.general_log ORDER BY event_time DESC

 
 

(2)用processlist显示

USE `information_schema`;

SELECT* FROM PROCESSLIST WHERE info IS NOT NULL;

具说这种方式可以实时显示,但是我的不知道为啥不能实时显示新的sql 先记录一下。

 
 



作者:Java老王
链接:https://www.jianshu.com/p/ed83bc2ffc6a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/sandea/p/11351905.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值