中易网

如何监听mysql执行的sql语句呢

答案:2  悬赏:0  
解决时间 2021-01-15 21:43
  • 提问者网友:皆是孤独
  • 2021-01-15 00:44
如何监听mysql执行的sql语句呢
最佳答案
  • 二级知识专家网友:骨子里都是戏
  • 2021-01-15 01:09
比如我想监听mysql的这样的操作,delete from acrelation where ***如果是这样的话,你可以看看关于mysql的触发器的东西。Rainbow702 写道引用最好可以日志或其它方式记录下来数据库本身应该就有操作日志的啊问题补充:我用的hibernate的PostDeleteEvent,还是有些问题hibernate自带的监听jkxydp 写道用spring的aop啊,在删除记录的方法上加一个记录日志的切入点去记录啊,dao层一般增、删、改、查的方法都是单独出来的吧,在所有删除记录的方法上写切入点。或者使用loger,其它的都不写,就在删除的方法里面写上日志应该就没问题。用hibernate就肯定有用到log4j吧,不想全写,就只在删除方法上写就完了。
全部回答
  • 1楼网友:千夜
  • 2021-01-15 01:55

如果想要在生产环境长时间监听 insert/update/delete之类的操作,建议在客户端/中间件层去做。
如果是定位问题时,监听一段时间的SQL语句,可以开启General Log,
开启监测所有SQL请求(生产环境不建议长时间开启,分析任务完成后可关闭general_log)
管理员登陆
$ mysql -u root -p
#设置存放路径
set global general_log_file=/data/log/mysql_general_log.log;
#设置开启general log, 1开启(0关闭),即时生效,不用重启MySQL
set global general_log=1;
若果只是想看慢查询的话,可以开启慢查询日志,生产环境可以开启。
启用慢查询日志记录 (建议生产环境开启)
vim /etc/mysql/mariadb.conf.d/50-server.cnf
或者 vim /etc/mysql/my.cnf
slow_query_log=1
log-queries-not-using-indexes
long_query_time=1
log-slow-queries=/data/log/mysql/log-slow-queries.log 
超过1s的都认为是慢查询。 开启慢查询以后,可以在慢查询日志文件中查看运行慢的SQL,
$ tail -f /data/log/mysql/log-slow-queries.log
详情参考:MySQL查询监测
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息