查找消耗CPU较大的sql语句

语句

查找消耗CPU较大的sql语句

一、使用unix系统命令查看资源

#sar 1 9

12:15:27      73      27       0       012:15:28      70      30       0       012:15:29      80      20       0       012:15:30      84      16       0       012:15:31      21       5       1      73

#top

 TTY     PID USERNAME PRI NI   SIZE    RES STATE    TIME %WCPU  %CPU COMMAND  ?    23093 oracle   154 20 29748K  3112K run   20:53  4.59  4.58 oraclebv  ?    23087 oracle   154 20 29636K  3016K run   24:18  0.93  0.93 oraclebv

二、使用oracle数据字典查找sql

SQL>set line 240SQL>set verify offSQL>column sid format 999SQL>column pid format 999 SQL>column S_# format 999SQL>column username format A9 heading "ORA User"SQL>column program  format a29SQL>column SQL format a60SQL>COLUMN OSname format a9 Heading "OS User"SQL>SELECT P.pid pid,S.sid sid,P.spid spid,S.username username,S.osuser osname,P.serial# S_#,P.terminal,P.program  program,P.background,S.status,a.sql_text SQLFROM v$process P, v$session S,v$sqlarea A WHERE P.addr = s.paddrAND S.sql_address = a.address (+)  AND P.spid LIKE '%&1%';
Enter value for 1: 23209(系统消耗较大进程id)
找到结果:

select * from cc_por where status=1 and deleted=0

使用autotrace分析语句。

sql>set timing on

sql>set autotrace on

sql>select * from cc_por where status=1 and deleted=0;

根据结果进行分析和改进。

时间: 2024-09-18 16:15:14

查找消耗CPU较大的sql语句的相关文章

Oracle中存储过程执行大的Sql语句时如何查看sql是否正确

  在Oracle中编写一个存储过程中,有时会用到较大的sql语句,但是通过PL/sql工具Test查看时又不能看到sql的样子,通过查看发现可以通过Oracle的物理临时表来处理, 在存储过程中添加DBMS_OUTPUT.put_line('要输出的Sql语句'); 然后在PL/sql工具中选中存储过程,右键选择Test执行,执行完成后可以通过DBMS_OUTPUT窗口查看sql结果了,很实用的

信息-跪等大神——SQL语句优化

问题描述 跪等大神--SQL语句优化 这个语句如何优化跪等: select A0188,A0190,A0101,cast(dp.dept_code as int) as a01depcode,A0177,case when A0107='男' then 2 else 3 end as sex,A0117,A0159,A0148,MobileTel,A01069,A01071,GW_NAME,case when A0191='在职人员' then 9 else 7 end as a0191 fro

SQL Server查找与删除表重复记录sql语句

在该示例中,我们将使用下表,它具有重复的 PK 值.在该表中,主键是两列(col1.col2).我们无法创建唯一索引或主键约束,因为这两行具有重复的 PK.该过程演示如何识别和删除重复的主键.    代码如下 复制代码 create table t1(col1 int, col2 int, col3 char(50)) insert into t1 values (1, 1, 'data value one') insert into t1 values (1, 1, 'data value o

SQL语句优化

前一段时间一直在优化系统,看了一些关于SQL语句优化的东西,在这里分享一下. 1.统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. select*from dual select*From dual 其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析.生成2个执行计划.所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行! 2.使用"临时表"暂存中间结果 简化SQL语句的重要方法就是采用临时表

SQL SERVER 的SQL语句优化方式小结

1.SQL SERVER 2005的性能工具中有SQL Server Profiler和数据库引擎优化顾问,极好的东东,必须熟练使用. 2.查询SQL语句时打开"显示估计的执行计划",分析每个步骤的情况 3.初级做法,在CPU占用率高的时候,打开SQL Server Profiler运行,将跑下来的数据存到文件中,然后打开数据库引擎优化顾问调用那个文件进行分析,由SQL SERVER提供索引优化建议.采纳它的INDEX索引优化部分. 4.但上面的做法经常不会跑出你所需要的,在最近的优化

生产环境sql语句调优实战第三篇

生产环境有一条sql语句执行比较频繁,占用了大量的cpu资源.原本执行需要花费11秒.在一次排查中引起了我的注意,决定看看cpu消耗到底在哪儿? sql语句是比较简单的,通过查询SUBSCRIBER_FA_V是一个视图.在视图中关联了几个和业务核心表. SELECT TO_CHAR(SUBSCRIBER_NO) SUBSCRIBER_ID,        SUB_STATUS,        SUB_STS_RSN_CD,        TO_CHAR(SUB_STATUS_DATE, 'yyy

mysql的查询sql语句转换成oracle的sql

问题描述 mysql的查询sql语句转换成oracle的sql SELECT CREATE_DATE SUM(ISBIND) AS ISBIND SUM(UNBIND) AS UNBIND SUM(SUBSCRIBE) AS SUBSCRIBE SUM(UNSUBSCRIBE) AS UNSUBSCRIBE FROM ( SELECT N.CREATE_DATE MAX( CASE N.EVENT WHEN 'subscribe' THEN COUNT ELSE 0 END ) SUBSCRIB

什么sql语句能通过一个值查询其所在的列名

问题描述 什么sql语句能通过一个值查询其所在的列名 差不多就是这样的一个表.怎么样才能在查询[常州代派]时返回[江苏],查询[东莞直营公司]时返回[广东] 解决方案 我觉得应该采用两张表城市名一种表如下图id city1 浙江2 广东 公司一张表id 公司名 城市id1 佛山A公司 2这样通过两种表来进行查找. 解决方案二: 用SQL语句怎么查询列名?用SQL语句怎么查询列名? --转载[DB2]SQL语句 查询列名.表名等信息 解决方案三: 应该不行吧,sql查数据就是根据所在的哪张表查哪些

数据库性能优化分析案例---解决SQL语句过度消耗CPU问题

解决|数据|数据库|问题|性能|优化|语句 问题描述:10月25日上午滨州网通的工程师报告OSS应用系统运行缓慢,具体操作是通过OSS系统查询话单,很长时间才能返回结果,严重影响了客户的正常使用. 问题处理:1.登陆数据库主机,用sar命令看到idle的值持续为0,CPU的资源已经耗尽: bz_db1# sar 2 4 SunOS kest 5.8 Generic_108528-19 sun4u    10/26/04 10:56:46    %usr    %sys    %wio   %id