`

sql优化--识别’低效执行’的SQL语句

 
阅读更多
oracle中有两个重要的视图:-v$SQL和v$SQLAREA。
(一)-v$SQL中记录的信息和AUTOTRACE显示的信息完全一致。视图包含如下字段信息:


第一次执行一个查询'select count(*) from emp'后查询-v$SQL视图可得到
select sql_text,executions,disk_reads,optimizer_mode,buffer_gets,hash_value
from v$sql where sql_text='select count(*) from emp'

再次执行询'select count(*) from emp'这个查询,统计信息中的物理读(DISK_READS)不再增加,因为数据已经在Buffer中存在,而BUFFER_GETS继续增加。执行次数也变为2次。

(二)v$sqlarea列出了共享SQL区(Shared SQL Area)中的SQL统计信息,这些SQL按照SQL文本的不同,每条会记录一行统计数据。注意这里所说的是“按照SQL文本”来进行区分,也就是说这个视图的信息可以看作是根据SQL_TEXT进行的一次汇总统计。视图包含如下字段信息:

执行如下sql即可定位到低效率的sql语句。
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
  
   ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
  
   ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
  
   SQL_TEXT
  
  FROM V$SQLAREA
  
  WHERE EXECUTIONS>0
  
  AND BUFFER_GETS > 0
  
  AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
  
  ORDER BY 4 DESC;


*文本相同的SQL语句,在数据库中的意义可能完全不同。如数据库中存在两个用户scott和dmuser,两个用户各拥有一张数据表EMP。在不同用户情况下同样执行'select count(*) from emp'语句。查询-v$SQL视图时,由于各自查询的物理对象截然不同,对应生成两条记录;查询v$sqlarea视图,由于sql_text相同,生成一条记录。
  • 大小: 13.7 KB
  • 大小: 51.4 KB
  • 大小: 51.8 KB
分享到:
评论

相关推荐

    使用ORACLE SQL Tuning advisor快速优化低效的SQL语句

    使用ORACLE SQL Tuning advisor快速优化低效的SQL语句, 这里是一个使用范例,有9个步骤, 后面 其他语句,都按照这个步骤来做就可以了。

    基于索引的SQL语句优化

    因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于...

    基于索引的SQL语句优化之降龙十八掌.docx

    因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于...

    如何使用AWR报告发现低效的SQL

    目前发现很多局点在上线以后有很多低效的sql,导致cpu繁忙、磁盘I/O繁忙、效率低下,影响系统的正常运行。如何在测试环节或上线以后发现这些低效的sql呢? Oracle AWR报告可以很好的帮我们解决这个问题

    SQL查询安全性及性能优化

     优化:【检查SQL语句是否能够使用索引,SQL语句如何执行效率高,制定一个执行计划】  编译:  执行SQL语句:【把编译过的查询要求提交并进行处理】 如何优化SQL 完善开发的管理 完善代码审核、测试机制,...

    基于索引的sql语句优化之降龙十八掌

    因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于...

    SQL语句的优化分析

    sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况。  网速不给力,不稳定。  服务器内存不够,或者SQL 被分配的内存不够。  sql语句设计不合理  没有相应的索引,索引不合理  没有...

    基于索引的SQL语句优化之降龙十八掌

    因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于...

    查找MySQL中查询慢的SQL语句方法

    如何在mysql查找效率慢的SQL语句呢?...一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2,long_query_time 当S

    程序员的SQL金典4-8

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

    c#实现用SQL池,多线程定时批量执行SQL语句的方法

    构建SQL池,分离业务逻辑层和数据访问层,让业务逻辑层从低效的数据库操作解脱,以提高系统整体性能

    sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句

    无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。 如 我要查询 Sendorder表中的冗余数据(没有和...

    用SQL实现统计报表中的小计与合计的方法详解

    客户提出需求,针对某一列分组加上小计,合计汇总。网上找了一些有关SQL加合计的语句。都不是很理想。决定自己动手写。思路有三个:1.... 优点:实现代码简洁,要求对GROUPPING和...SQL语句 代码如下:select * into #TB f

    程序员的SQL金典6-8

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

    程序员的SQL金典7-8

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

    程序员的SQL金典3-8

     2.2 通过SQL语句管理数据表  2.2.1 创建数据表  2.2.2 定义非空约束  2.2.3 定义默认值  2.2.4 定义主键  2.2.5 定义外键  2.2.6 修改已有数据表  2.2.7 删除数据表  2.2.8 受限操作的变通解决方案 第3章 ...

    SQL编写规范(数据库操作规范)

     EXPLAIN PLAN是一个很好的分析SQL语句的工具,它可以在不执行SQL的情况下分析语句    通过分析,我们就可以知道ORACLE是怎样连接表,使用什么方式扫描表(索引扫描或全表扫描),以及使用到的索引名称    按照...

    oracle sql performance tuning

    1 序言 2 2 影响SQL PERFORMANCE的关键因素和配置: 2 2.1 关于执行计划 2 2.2 ORACLE优化器 2 2.2.1 ORACLE优化器的优化方式 2 2.2.2 优化器的优化模式(Optermizer Mode) 3 ...3.12 识别 “低效运行”的SQL语句 11

    Oracle数据库Sql性能调优

    1.23 识别’低效执行’的SQL语句 14 1.24 用索引提高效率 14 1.25 索引的操作 15 1.26 多个平等的索引 16 1.27 等式比较和范围比较 17 1.28 不明确的索引等级 17 1.29 强制索引失效 18 1.30 避免在索引列上使用计算 ...

Global site tag (gtag.js) - Google Analytics