普通手段
分区,HASH-JOIN,数据仓库函数,物化视图,位图索引等等为大伙在数据仓库常用的技术,
而下面列举的tips为项目中常用的优化手段/技巧,绿色背景highlight的部分属于非常规手段,使用场景较为极端,需谨慎考量。
 
Oracle并行场景:
  • SQL*Loader 的parallel参数
  • 事务失败回滚的并行处理 FAST_START_PARALLEL_ROLLBACK参数
  • expdp设置parallelism参数,设置多个datapump文件
  • 大批量处理+并行处理(parallel),减少select次数,逻辑清晰,尽可能一次select……jion 之后再进行统一分析函数的处理,
     
    select 
      /*+ PARALLEL(Table_Name,并行数) */ 
      统计函数 sum avg 
      case when then else end 
      over(partition by order by )
      分析函数 lead/lag,rank,ratio_to_report,Period-over-period comparisons 等等...
    from 
      Table_Name
    group by
    rollup ,cube 等等...
  • 创建索引、rebuild、设置并行参数(譬如大批量ETL全量时,drop索引,ETL之后再create)
  • 收集统计信息的 degree参数
  • 还有aleter session enable parallel dml;
       insert /*+ append parallel(Table_I,并行数) */
         into Table_I nologging 
           select /*+ PARALLEL(A,并行数) PARALLEL(B,并行数) PARALLEL(C,并行数) */ 
           ……
nologging 在DML时往往很有用
 
Insert、update
Insert ,update,delete 场景
1、当然最快的仍然是create table NEW_TAB  as select * from OLD_TAB 
2、delete的时候如果数据量过大,可以权衡考虑全量导出建立:
CREATE TABLE NEW_TAB NOLOGGING PARALLEL as select * from OLD_TAB where 条件<>要delete的数据,再truncate原表,rename重命名新表。 
update也可以同理,把update的思路写到select里面再truncate原表,rename新表。
 
MERGE:(同样可以使用并行,nologging
  减少扫描表的次数,替代insert then update语句
  例如:每月计算生产库里的会计科目成本,放入数据仓库的事实表,但有少部分的冲销凭证会影响近几个月的操作。原本的total delete+insert,或是insert新数据+时间范围内update的操作,换为merge where 时间覆盖可能发生冲销的范围即可。
 
参数:
1、
alter session set workarea_size_policy=manual;
alter session set sort_area_size=107341824;
alter session set sort_area_retained_size=107341824;
alter session set db_file_multiblock_read_count=128;
在并行dml、并行select的ETL JOB里可以添加如上参数,10g版本似乎要重复两次才可以生效。
db_file_multiblock_read_count配合32k、16k的大block表空间使用,针对传统SATA盘,FC盘有效,增加单次IO的收益。
 
同理,有时候反范式冗余多维度与事实表到一块,组成长表,db_file_multiblock_read_count+32K/16K大block的性能也很好,但数据的适用场景就减少了,多数用于临时主题分析,数据集市。
 
2、
修改参数 _smm_auto_min_io_size 、smm_auto_max_io_size
增大每次hash join 的内存分配大小,提升group by性能,配合大PGA使用。
 
3、极端环境下(或测试环境,或是同步数据的非关键过渡库)打开参数 alter system set commit_write='batch,nowait'; (10gR2开始才有的特性)使得db在commit的时候,无需等待 LOG BUFFER写出到REDO LOGFILE,即返回commit完成,需要评估灾难时断电带来的风险,如有UPS可考虑打开。
 
注意:极端环境是指频繁的commit带来的log file sync等待成为瓶颈点的时候才考虑,才考虑!打开参数,多数情况下数据仓库不会有这个问题。
再极端一些,还可以把Online Redo文件加大至1~2G甚至更大,关闭归档,减少日志切换带来的等待,本条需要权衡场景,勿在生产环境随意使用。
外部表
  • 不能dml,不能建索引,不支持分区
  • 适合只使用一次,无需修改,方便load入数据,可以并行查询,可以Nested_Loop JOIN,可以HASH_JOIN
  • 外部表结合MERGE的场景
系统级临时表(无DML锁,无REDO)
  TRANSACTION级
  SESSION级
direct path insert
 
物化视图:空间换取时间
 
表空间迁移
可以传输分区表的分区,属于物理文件级别的传输,不同于SQL级别,属于最高性能,适用于跨地区的分库、子库汇总至中心库的场景。
 
 
DataStage方面的处理
1、Bulk load方式
读端:设置 enable partitioned reads ,modulus方式分区读取integer(zeile)
写端:oracle connect 选择bulk load方式
在bulk load写入前把所有索引,主键等drop掉。结束后再重建。
DataStage主机在多CPU的情况下,推荐设置多个并行node进行ETL作业,轻松将IO压到极限。
 

 
Before SQL Statement
After SQL Statement
 
Node的设置
 
多Node并行的效果如下图:
 
 
 
 
如果在瓶颈在Datastage的Node上
(可以测试下,node的文件建立在linux的tmpfs,即/dev/shm/tmp来提速,避免在ETL过程中数据经过datastage主机的磁盘,增加io瓶颈点,主机的内存要足够大,如64G,需测试!)
# mkdir /dev/shm/tmp
# chmod -R 777 /dev/shm/tmp
# mount --bind /dev/shm/tmp /tmp
像这样就可以直接用/tmp 来做node文件存放使用。
 
考虑限制用量的情况也可以用 # mount tmpfs /tmp -t tmpfs -o size=512m
限制/tmp挂载的tmpfs只能用512m
 
同理,大内存主机下Oracle的 temp表空间也可以往这里放,前提是temp表空间的使用情况已经平稳,DBA能预估使用的波动范围,并且关掉自动增长。需严格测试!
posted @ 2015-04-18 16:46 Gerrard 阅读(3465) 评论(0) 推荐(0) 编辑
摘要: 目标架构如上图一、硬件评估cpu主频,核数推荐CPU核数与磁盘数的比例在12:12以上Instance上执行时只能利用一个CPU核资源进行计算,推荐高主频内存容量网络带宽重分布操作Raid性能条带宽度设置回写特性二、操作系统1、在SUSE或者RedHat上使用xfs(操作系统使用ext3) 在Sol... 阅读全文
posted @ 2015-03-21 18:13 Gerrard 阅读(22142) 评论(7) 推荐(0) 编辑
摘要: ZCOR0015的优化全过程记录文档 2015年3月,今天无意翻到这篇写于2010年7月的文档,回想那时的工作,毕业3年初出茅庐的我面对接触不多的SAP+DB2竟敢操刀动斧,自信满满。 虽然这过程一路坎坷,数次判断几乎全都被打脸验证,看着如小强般坚毅的我,哈哈~ 文档里带着情绪的措词十分... 阅读全文
posted @ 2015-03-19 15:50 Gerrard 阅读(2682) 评论(1) 推荐(0) 编辑
摘要: 一、总览大致上的逻辑如上图,简化细节来归纳,便是 用一个bat脚本来驱动整个备份过程。二、一些准备工作1、为备份所需的脚本,以及最终备份生成的文件创建目录 开始=》运行=》 cmdmkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"mkdir "... 阅读全文
posted @ 2015-03-17 22:51 Gerrard 阅读(1584) 评论(0) 推荐(0) 编辑
摘要: 横版流程卡 优化(复杂SQL的优化),留档一、横版流程卡原SQL 1 SELECT SOL.*,para.* FROM 2 (SELECT 3 A.SERIAL_NUMBER, 4 SUM(casewhen B.spc_item='Speed'and SUBS... 阅读全文
posted @ 2015-01-23 18:45 Gerrard 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 本文首发于『懂球帝』这一场球赛虽然极其普通,在各位懂球帝面前或许不值得一提,但它极具历史意义,因为这是海南第一个职业联赛队伍的首场正式比赛,同时也是海南铁汉队第一次在正式比赛中与球迷们见面。稍做一个历史铺垫,海南岛曾经有过一次最为接近拥有自己职业球队的时刻,那便是1996年的前卫寰岛队,那时它背后支... 阅读全文
posted @ 2015-01-04 22:20 Gerrard 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 原文链接:Diamonds Aren\'t Forever, but Van Gaal and Rodgers Know How to Make Them Shine作者:Jonathan Wilson,Sep 18, 2014Diamonds Aren't Forever, but Van Gaa... 阅读全文
posted @ 2014-10-18 00:28 Gerrard 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 本文首发自懂球帝世界杯之前,在ITPUB上翻到一篇主题讨论,关于『大数据、预测』,嗯,近两年你在互联网上几乎躲不开这几个字眼。媒体的威力不可小视,当这种95%以上业内人士都说不清道不明的概念也能在街边卖菜大婶的嘴里蹦出来的时候,你就知道,他和『小苹果』『欧巴江南style』无异了。回想起来,数据仓库... 阅读全文
posted @ 2014-08-11 09:42 Gerrard 阅读(997) 评论(0) 推荐(0) 编辑
摘要: 根据Oracle-L邮件列表里主题「Full scan vs index」的讨论而来。1、测试环境创建SYS@HEMESRHTDB2(1.206)> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionPL/SQL Release 11.2.0.3.0 - Producti 阅读全文
posted @ 2013-10-30 13:26 Gerrard 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 虽然,只是个普通玩家,虽然带了一点青春,一点爱。虽然,有那么些怀念 ~好吧,不浪费篇幅伪伪的煽情,直插主题。(很长且多图,更多讲述的是实况FIFA间的你来我往,互相赶超的故事。本想全面展开描述细节,但无奈FIFA玩得不多,只能管中窥豹,抛砖引玉,望能博得更多交流)追溯到最早期的时候其实1、2版本之前... 阅读全文
posted @ 2013-07-16 13:36 Gerrard 阅读(1470) 评论(2) 推荐(0) 编辑
摘要: 来源不详了,可以见图片水印。 阅读全文
posted @ 2012-12-28 16:49 Gerrard 阅读(279) 评论(0) 推荐(0) 编辑
摘要: The Rafael Benitez Column: Gerrard can recall how we blocked out Ibrahimovic拉法贝尼特斯专栏: 狙击伊布吧,杰拉德!来源拉法官网http://www.rafabenitez.com/http://www.rafabenitez.com/web/datos_web/TheIndependent-15-6-2012.pdfEngland must create a screen in front of the Sweden danger man and starve him英格兰必须在伊布面前建立一道屏障,减少他的球权!R 阅读全文
posted @ 2012-06-15 22:14 Gerrard 阅读(609) 评论(0) 推荐(0) 编辑
摘要: xshell里用vi黑漆漆的一片,丑陋至极啊,字体控 代码着色控 完全无法忍受. 阅读全文
posted @ 2012-04-23 16:33 Gerrard 阅读(1238) 评论(0) 推荐(0) 编辑
摘要: 从宏观上来看,巴萨最大的弱点是也正是他们最大的优点:体系。 .... .... 冠军会褪色,但是风格不会。 阅读全文
posted @ 2012-04-19 13:29 Gerrard 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 确保你的environment option =>library添加正确. 终于可以编译带ado组件的project了... 阅读全文
posted @ 2012-04-05 16:34 Gerrard 阅读(2935) 评论(0) 推荐(1) 编辑
摘要: 没错,我抄的就是 可能吧的风格 (需FQ). 如此一来文章阅读会舒服许多,竖条缩进 层次感更明显. 阅读全文
posted @ 2012-03-07 18:14 Gerrard 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 最近开了知乎,很认可里边的氛围~ 转载一篇自己的回答,因为blog很久没有更新了... : ) 阅读全文
posted @ 2012-02-09 12:07 Gerrard 阅读(266) 评论(0) 推荐(0) 编辑
摘要: http://firecacada.blog.163.com/blog/static/7074376201174104056243/刚看完以上blog文--如何做产品减法摘抄罗列下. 第一个手段是制定少而精的阶段性目标。第二个手段是制定严格的发布日程规划。第三个手段:尽可能快速发布你的第一个版本。这不仅仅只是做减法了...看起来有敏捷的味道,看起来好似都为大家所熟知的常理,都需要遵守去做,但个中滋味啊,都是肉身试出来的经验,唯有经历过才知道. 阅读全文
posted @ 2011-08-08 11:10 Gerrard 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 每天重复着自认为有意义的工作,小心翼翼的处理身边每个人的关系,谈着自己都不知道有无意义的恋爱,对上级点头哈腰,丧失自我的服从,追求物欲享受 而精神匮乏空洞无物,生活枯燥乏味 风平浪静 无惊无险。以上的这种状态是每个人最不乐意见到的,但是很不幸...大家或多或少 都在这种状态下活着.当你我都是孩子的时候,我们会瞪大了眼睛 一直怀揣着好奇心 探查这个世界,不自觉的观察你所看到的,不自觉的下结论.然后你开始下意识的去选择所认可的观点,观念.但是现在 生活节奏的加快,使得人们更倾向于以快餐的方式接受事物,随着惰性越来越大,慢慢的 开始不愿思考,其实是没有勇气去思考,害怕看清真实的自己.很多时候我们像一 阅读全文
posted @ 2011-02-24 12:40 Gerrard 阅读(221) 评论(0) 推荐(0) 编辑
摘要: J:\DataStage_install\media\FP2_WIN的目录2011-02-23 15:24<DIR> .2011-02-23 15:24<DIR> ..2010-12-22 15:36617,189,076 fixpack_FP2_IS81_windows_8100-1.ispkg2010-12-22 14:35<DIR> jre2011-01-28 16:01 1,274,502 updater.jar2 个文件 618,463,578 字节3 个目录 58,011,631,616 可用字节以下为执行时的报错信息.J:\DataStage_ 阅读全文
posted @ 2011-02-23 16:21 Gerrard 阅读(1233) 评论(0) 推荐(1) 编辑
点击右上角即可分享
微信分享提示