mysql查询最消耗cpu的_查询最耗cpu的sql语句

1.        如何查看及解决最耗 CPU 的 SQL 语句1.1.    用 top 监控服务器负载

[root@node1 ~]# top

top - 22:51:02 up 56 min,  1 user,  load average: 0.00, 0.00, 0.00

Tasks:  96 total,   1 running,  95 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   1035096k total,   351488k used,   683608k free,    24140k buffers

Swap:  2096472k total,        0k used,  2096472k free,   270360k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

1 root      15   0  2084  660  560 S  0.0  0.1   0:00.22 init

2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0

如果发现 user 中的 CPU 过高,比如 oracle 中最高的进程 pid 为 1138782 ,占CPU27% ,则执行下一步。

1.2.    查询数据库会话的 sid 、 serial#

进入数据库,根据 oracle 进程的 pid 查出对应数据库会话的 sid 、 serial# :

select s.sid,s.serial#

from v$session s,v$process p

where s.paddr=p.addr and p.spid='1138782';

查询出来的结果 sid 、 serial# 分别为 482 、 56767

1.3.    查询 SQL 语句

根据数据库会话的 sid 查出具体的 SQL 语句:

desc v$sqltext

名称  是否为空 ? 类型

----------------------------------------- -------- --------------

ADDRESS                                            RAW(4)

HASH_VALUE                                         NUMBER

COMMAND_TYPE                                      NUMBER

PIECE                                               NUMBER

SQL_TEXT                                           VARCHAR2(64)

select sql_text

from v$sqltext a

where a.hash_value=(select sql_hash_value from v$session b

where b.sid='&sid')

order by piece;

输入 sid 的值 :

1.4.    处理 SQL 语句

如果 SQL 语句影响了数据库的运行,可以 kill 掉 SQL 语句的会话:

①在数据库中杀死 SQL 语句的会话:

alter system kill session '482,56767';

如果不能在数据库中杀死 SQL 语句,可在 LINUX 系统中强制杀死 Oracle 进程

②在 linux 系统中强制杀死 oracle 进程

#kill -9 1138782

1.5.    SQL 语句优化

最后可以根据步骤( 3 )查询出来的 SQL 语句进行优化,以避免再次出现上述消耗CPU 的情况。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值