基于CBO优化器谓词选择率的计算方法
选择率selectivity是Oracle的CBO中比较重要的一个概念。和selectivity经常一起提到的一个概念是cardinality,其实这两个概念的本质上是一样的。selectivity是指一个SQL操作的得出结果集占原来结果集的百分比,而cardinality就是指一个SQL操作的得出结果集的行数,CBO是通过selectivity来计算cardinality的,也就是说cardi...
oracle优化器之执行计划
什么是执行计划执行计划显示了执行一个sql语句所需步骤的详细信息.这些步骤代表了一组数据库操作它们会消费和生产行数据.这些操作的顺序以及它们的实现取决于查询优化器对查询转换和物理优化技术的联合使用.执行计划通常是以表格形式来显示,这个执行计划实际上是一个树形结构.例如下面是一个基于sh方案的查询:SELECT pr...
执行时间在1秒以下的SQL同样也会引发性能问题
某客户的操作人员反应很慢不能操作,管理人员登录小机系统后发现CPU使用到了95%以上。而且这种情况持续了几个月。小机是IBM的P520,配置是2颗4核的CPU,内存是32G,Oracle是10.2.0.5。topas与生成的AWR报告如下:从上面的load profile部分可以看到每秒执行的sql与事务数并不高,因为是周末并没有太多人使用系统...
百倍性能提升:谓词条件(a||b) vs (a,b)
某系统维护人员在执行一查询需要1个多小时才能执行完成,根本不能满足业务需求,通过应用系统日志找到了该SQL:DEBUG: 2016-04-05 12:18:48,203: com.powerise.hygeia.framework.jdbclogger.PreparedStatementWrapper: exec : 2456844ms at com.powerise.hygeia.biz.medicare.entity.EnLiquidateDetailInfo.getLiquida...
Oracle性能优化之虚拟索引
虚拟索引是定义在数据字典中的伪索引,但没有相关的索引段。虚拟索引的目的是模拟索引的存--而不用真实的创建一个完整索引。这允许开发者创建虚拟索引来查看相关执行计划而不用等到真实创建完索引才能查看索引对执行计划的影响,并且不会增加存储空间的使用。如果我们观察到优化器生成了一个昂贵的执行计划并且SQL调整指...
统计信息过期导致SQL进行NESTED LOOPS查询缓慢
今天qq上一好友发过来一个sql让我帮他看看,说这个sql加上一个条件查询时间在3~4秒左右,而不加上这个条件则非常快,正好这段时间也在学习优化,就看看问题所在。sql语句大致如下:SQL> SELECT a.mc_id AS company_id, a.mc_name AS company_na...
oracle中not in和not exsist详解
以下内容转至自:http://blog.sina.com.cn/s/blog_6ff05a2c0100tref.html在网上搜了下关于oracle中not exists和not in性能的比较,发现没有描述的太全面的,可能是问题太简单了,达人们都不屑于解释吧。于是自己花了点时间,试图把这个问题简单描述清楚,其实归根结底一句话:not in性能并不比not exists差,关键...
四种联结方法——《Oracle SQL 高级编程》笔记1
联接的方法有四种:嵌套循环联接、散列联接、排序-合并联接和笛卡尔连接每个联接方法都有两个分支。所访问的第一章表称为驱动表(the driving table),访问的第二张表则称为内层表或被驱动表(inner 或 driven-to table)。优化器通过使用统计信息和 where 子句中的筛选条件计算每个表分别返回多少行数据来确定那张表是...
Oracle日常性能查看常用语句
Oracle日常性能查看常用语句
Oracle中truncate和delete的区别
删除表中的数据的方法有delete,truncate,它们都是删除表中的数据,而不能删除表结构,delete 可以删除整个表的数据也可以删除表中某一条或N条满足条件的数据,而truncate只能删除整个表的数据,一般我们把delete&nb...
oracle 数据泵参数
ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法使用expdp和impdp时应该注重的事项:1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。2、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。3、imp只适用于exp导出的文件,不适用于expdp导出文件;im...
Oracle 性能优化的基本方法概述
acle 性能优化的基本方法概述1)设立合理的性能优化目标。2)测量并记录当前性能。3)确定当前Oracle性能瓶颈(Oracle等待什么、哪些SQL语句是该等待事件的成分)。4)把等待事件记入跟踪文件。5)确定当前的OS瓶颈。6)优化所需的成分(应用程序、数据库、I/O、争用、OS等)。7)跟踪并实施更改控制过程。8...
高级SQL优化(一) ——《12年资深DBA教你Oracle开发与优化——性能优化部分》
转载地址:http://sishuok.com/forum/blogPost/list/6413.htmlSQL优化简介一般在应用中, 糟糕的SQL语句是造成系统性能低下的最主要原因,例如大小写的不统一、同样的SQL语句不同的写法等。而且,随着数据量的增加,情况会变得越来越严重。(题外话:优秀的Oracle数据库优化人才,是任何公司都稀缺的...
测试去除重复数据
1、创建测试表,初始化数据JZH@jzh>create table t (x number,y number);Table created.JZH@jzh>insert into t values (1,1);1 row created.JZH@jzh>insert into t values (1,1);1 row created.JZH@jzh>insert into t values (2,2);1 row created.JZH@jzh>commit;Commit complete.JZH@jzh>select * from t;&nbs...
走了索引为啥还像蜗牛一样?
一个有关走了索引为啥还是这么慢的例子现象及解决 最近发现一个同事的一个建表sql跑了一天的时间了还没有跑完的迹象,于是决定对其优化优化,原sql如下: createtable csy_zj2_acct_0628_t2 tablespaceusersnologgingasSELECT A.*, M...
采用MERGE 语句的非关联形式提升性能
今天照例巡查垃圾sql时,发现一个跑了很长时间的sql,且其执行计划也非常的大,这个sql非常可疑,得排查排查: 第一步,照例查询内存中的执行计划:SELECT*FROMTABLE(DBMS_XPLAN.DISPLAY_CURSOR('17t226txddfy5',0,'advanced')); 可...
update修改为merge(max+decode)
记录日期: 2014-07-30 14:25:27 ------------- 优化方法: 减少大表扫描次数采用max+decode方式 原sql语句:UPDATE RKO_ACCT_STATUS A SET RMB_PAYMENT =(SELECTNVL(SUM(POSTING_AMT),0)FROM RKOT_ACCT_PMT_PRIOR B WHERE B.ACCT = A.ACCT AND ORG =...
采用merge语句的非关联形式再次显神能
采用merge语句的非关联形式再次显神能题记:采用merge语句的非关联形式确实可以提高update语句的性能,尤其对于百万级别的数据量,之前的一个关于merge语句的优化案例请参考:http://blog.itpub.net/26736162/viewspace-1218671/ 今天发现一个update的更新sql语句跑了1天多的时间了,又是单纯的updat...
将游标修改为建表来提高效率
记录日期: 2014-07-30 14:25:27 题记: 最近一个同事说一个更新语句很慢求助与我,我看了下,这类语句的优化具有典型的代表性,于是记录下来和大家共享下。 原sql语句: DECLARE V_PARTYNO VARCHAR2(20); V_APP...