如果有一天系统崩了,我们到底怎么抓SQL?2+2的方式。

hql 2021/10/29 2397 10 2
摘要 当然是两种手段(赶紧找原厂工程师、自己解决啦);如果自己解决(可以通过 TRACE快速获取数据库中有全表扫描的SQL、通过SQL日志,快速记录数据库中执行过的所有的SQL语句——然后分析他们)

某一天,系统崩了,数据库告急;不管是CPU过载,慢语句过多(这个时候,慢语句可能失去了一些意义,因为它可能不是害群之马,只是受害者 —— 这个应该好理解;雪崩之下,一个SQL都躲不掉,一个SQL都快不了);还是CPU使用率很低,其实CPU使用率很低,可能也是有问题的。就是可能并发不搞,但是单个语句执行时间确实很长。

手段一

方法一

通过sql日志,快速记录数据中执行过的所有SQL语句,并且分析这个方法这里不赘述了,可以参考这个链接

方法二

10003 事件

trace含有特定操作符的语句输出到TRACE文件
alter session 0 set events ‘10003 trace name context forever,level 1’
level 支持1到15 含义如下:
LEVEL 1 CSCN
LEVEL 2 HASH JOIN
LEVEL 4 HAGR
LEVR 8 NEST LOOP
支持 这几种操作符号组合,比如TRACE CSCN 和 HASH JOIN 的语句,level 可以设置为3 (1+2)

例子:如果我们要快速记录数据库中所有带CSCN操作符的SQL语句,怎么处理?

  1. 连上数据库,执行下面语句
alter session 0 set events '10003 trace name context forever,level 1'

复制

  1. 然后去数据库服务器上的data目录下的trace查看文件内容即可

文件内容,手动看吧;用bash命令分析也好、自己写工具分析也好;有写好的可以c一份给这个[邮箱] (Quincy@mywiz.cn)

注意:
关闭命令在这里哟:

alter session 0 set events '10003 trace name context off'

复制

手段二

如果要找原厂的话:听说这个电话[24小时免费服务热线] (4009916599)有求必应,不知道是不是真的 😉

评论
后发表回复
🇲 r.🇱 i
方法2的能告知一下关闭捕获的命令不,服务器磁盘快撑不住了
发布于 2023/02/15 02:59

作者

文章

阅读量

获赞

扫一扫
联系客服