本人使用oracle时间不多,但是在项目中积累了一些经验教训,记录于此,以方便自己和他人解决类似的问题。

1.temp space超出限制的问题

问题场景:

在复杂的ETL query中,有时候一张fact表逻辑复杂,来自多张表的join,我习惯写成CTE的方式,

但CTE是放在内存中的,所以比较快捷,但如果数据量过大,则会spool到临时空间中,如果db server的配置不可观,则极有可能发生如此的错误。

解决方案:我之前在sqlserver上遇到的类似问题时,是直接into到物理表中,然后在物理表上创建索引,再用于后面的join.这边这里的同事使用MV(据说是oracle的银弹),把原来的复杂逻辑拆解成多个MV的方式,然后在后来调用的时候,就手工强制刷MV后再使用。

2.插入的数据中含有&

问题场景:

数据库中有两张静态配置表,数据需要我们手工写成INSERT INTO配置数据。发现插入的数据中含有&。如果直接在sqlplus或者在oracle sql develper 中报提示,因为
它们把&后面的字符串识别为变量。

解决方案:

使用set define off;这样就会把含有&的部分也识别为普通字符串。

3.FULL JOIN 的性能问题

问题场景:

ticket(问题描述单)中含有国家和区域,但是此处的国家和区域并不是完全匹配的,即和我们库中的标准的国家和区域表的关系不完全一致。我们需要做的是,根据一定的规则,匹配上正确的国家和区域之间的关系的话则保留,匹配不上的国家为空,区域也保留之类的。需要用到full join.

但问题是,我使用full join后这个MV就从几十秒变为二十分钟左右,让人无法忍受。数据量大概十多万。

解决方案:一同事搜索后,理解full join就是union full join 和 left join 的结果集,然后尝试把full join改写成 left join union right join,MV变回到十几秒就刷好了。

讨论个问题:

如何阅读复杂的sql?并发现可能的数据问题?

找到最基本的主表,关注表与表之间的join字段,看看是否有空值,会miss值。

看看表与表之间的关系是1:1还是M:N。

 
 

 
 

Oracle 性能优化之一二的更多相关文章

  1. 【转载】我眼中的Oracle性能优化

    我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...

  2. 降低磁盘IO使Oracle性能优化(转)

    文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...

  3. 我眼中的 Oracle 性能优化

    恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...

  4. oracle性能优化之awr分析

    oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...

  5. Oracle性能优化1-总体思路和误区

    最近在看梁敬彬老师关于Oracle性能优化的一些案例,在这里做一些简单的总结 1.COUNT(*)与COUNT(列)哪个更快 drop table t purge; create table t as ...

  6. Oracle 性能优化的基本方法

    Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...

  7. Oracle性能优化小结

    Oracle性能优化小结 原则一.注意where子句中的连接顺序 Oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须卸载其他where条件之前,哪些可以滤掉最大数量记录的 ...

  8. oracle 性能优化建议小结

    原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHER ...

  9. 浅谈Oracle 性能优化

    基于大型Oracle数据库应用开发已有6个年头了,经历了从最初零数据演变到目前上亿级的数据存储.在这个经历中,遇到各种各样的性能问题及各种性能优化. 在这里主要给大家分享一下数据库性能优化的一些方法和 ...

随机推荐

  1. sphinx配置文件sphinx.conf参数详细说明

    sphinx配置文件sphinx.conf参数详细说明 sphinx.conf各个参数详细说明 # # Sphinx configuration file sample # # WARNING! Wh ...

  2. docker与虚拟机性能比较

    http://blog.csdn.net/cbl709/article/details/43955687www.chenbiaolong.com 概要 Docker是近年来新兴的虚拟化工具,它可以和虚 ...

  3. idea中maven项目xml资源文件无法读取

    解决方法:编辑pom.xml文件 添加如下标签 <build> <resources> <resource> <directory>src/main/j ...

  4. fibonacci封闭公式

    Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f ...

  5. 泛函编程(22)-泛函数据类型-Monoid In Action

    在上一节我们讨论了Monoid的结合性和恒等值的作用以及Monoid如何与串类元素折叠算法相匹配.不过我们只示范了一下基础类型(primitive type)Monoid实例的应用,所以上一节的讨论目 ...

  6. css样式reset

    初始化样式. @CHARSET "UTF-8"; body,ur,ol,li,p,h1,h2,h3,h4,h5,h6,form,fieldset,table,td,img,div, ...

  7. Introduction to ASP.NET 5

    ASP.NET 5 is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET 5 ...

  8. css超出2行部分省略号...

    今天做东西,遇到了这个问题,百度后总结得到了这个结果. 首先,要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用 ...

  9. JS中检测数据类型的四种方法

    1.typeof 用来检测数据类型的运算符->typeof value->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."st ...

  10. 结合微软开放api,使用MSN,Hotmail等登陆Sharepoint网站

    成功使用Windows Live账号登陆SharePoint系统. 附上创建SPTrustedIdentityTokenIssuer的PS脚本====================RegSTS.ps ...