Oracle 性能优化之一二
本人使用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 性能优化之一二的更多相关文章
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- 降低磁盘IO使Oracle性能优化(转)
文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...
- 我眼中的 Oracle 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- Oracle性能优化1-总体思路和误区
最近在看梁敬彬老师关于Oracle性能优化的一些案例,在这里做一些简单的总结 1.COUNT(*)与COUNT(列)哪个更快 drop table t purge; create table t as ...
- Oracle 性能优化的基本方法
Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...
- Oracle性能优化小结
Oracle性能优化小结 原则一.注意where子句中的连接顺序 Oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须卸载其他where条件之前,哪些可以滤掉最大数量记录的 ...
- oracle 性能优化建议小结
原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHER ...
- 浅谈Oracle 性能优化
基于大型Oracle数据库应用开发已有6个年头了,经历了从最初零数据演变到目前上亿级的数据存储.在这个经历中,遇到各种各样的性能问题及各种性能优化. 在这里主要给大家分享一下数据库性能优化的一些方法和 ...
随机推荐
- Azure开发者任务之七:在Azure托管服务中托管WCF服务角色
在一个托管服务中托管一个WCF服务角色和托管一个ASP.Net Web Role基本类似. 在上一篇文章中,我们学习了如何使用WCF Service Web Role. 在本文中,我会对上一篇文章进行 ...
- csharp:Dapper Sample
You can find Dapper on Google Code here: http://code.google.com/p/dapper-dot-net/ and the GitHub dis ...
- EntityFramework 更新表结构到数据库
在程序包管理器控制台 1.执行:Enable-Migrations -Force 生成:Migrations 2 修改AutomaticMigrationsEnabled默认为false改为true ...
- 【BZOJ 4326】【NOIP2015】运输计划
http://www.lydsy.com/JudgeOnline/problem.php?id=4326 题目描述 公元2044年,人类进入了宇宙纪元. 国有个星球,还有条双向航道,每条航道建立在两个 ...
- [moka同学笔记]yii2.0表单的使用
1.创建model /biaodan.php <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/08/05 * Tim ...
- web技术人员-推荐书籍
学习是技术人员成长的基础,本次分享20本技术方面的书籍,这些书不是每一本都是经典,但是每一本都有其特点.以下20本大部分本人都看过,因此推荐给大家.(本次推荐的20本只是一个参考,比如像Head Fi ...
- 初识你---------Swift【下篇】
Swift中的结构体 Swift的结构体对比OC来说,可以添加初始化方法.可以遵守代理协议等,同时:Swift的Bool类型的变量也是一个结构体,所以只能选择true和false. Swift中声明结 ...
- HTML中行内元素的竖直方向的padding和margin是否真的无效
参考资料:Inline elements and padding 今天写一个导航栏时遇到了一个问题:行内元素的padding-top,padding-bottom和margin-top,margin- ...
- Button 对 TreeView1 所有节点的全选
protected void Button1_Click(object sender, EventArgs e) { for (int i = 0; i < this.Tre ...
- 在SharePoint中无代码开发InfoPath应用: 一个测试Web Service的工具
这是这个系列的第一篇,介绍一个小工具,主要是用在Web Service测试的. 因为为了用一点高级的东西,就免不了和web service打交道. 你可以使用按照KB819267来修改web.conf ...