通过Shell脚本获取当前数据库中最耗费CPU的SQL语句

#!/bin/bash
#获取mysql的进程id
pid=`ps -ef | grep mysql | grep -v 'grep' | awk '{print $2}'`
#创建数组接收查询到的id
pidARR=($pid)
#创建数组将下面查询的线程id存放在一起
pidAdd=()
#循环mysql的进程id
for(( i=0;i<${#pidARR[@]};i++)) do
#${#array[@]}获取数组长度用于循环
#echo ${pidARR[i]};
mysqlPid=`top -n 1 -p ${pidARR[i]} -H |grep 'PID' -A 5 | awk '{print $2}'|grep -v "PI
D" `
#将线程id存放在一起
pidAdd+=($mysqlPid)
done;
#输出查询到的id
#echo "ArryAdd:"
#for(( i=0;i<${#pidAdd[@]};i++)) do
#echo ${pidAdd[i]};
#done;
#将数组转换为字符串
for a in "${pidAdd[@]}"; do
   S="${S:+${S},}${a}"
done;
echo “PID:”$S
#获取登录密码,默认是root用户
echo -n "Enter your password: "
read password

echo "SlowSQL:"
#连接数据库做查询
mysql -uroot -p$password 2>/dev/null<<EOF
select sql_text from performance_schema.events_statements_current where thread_id in
(select
thread_id from performance_schema.threads where thread_os_id in($S) )\G
EOF

        目前还有瑕疵,获取进程时是写死的,应该做判断。

         执行脚本后,会展示出当前占用CPU前五的SQL语句。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值