- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle数据仓库优化
Oracle数据仓库开发优化;HWM(High Water Mark)
只读表空间
分区表
隐式转换
索引
并行
压缩;HWM(High Water Mark);凡是对表空间上的数据进行修改的操作都被禁止,包括insert,delete,update,truncate.
有效防止数据被意外删除和修改
可以将不会修改的历史数据所在的表分区移入只读表空间
缩短备份和恢复时间.对只读表空间的数据只做一次备份,而不需要持续进行全量或增量备份.;对于数据仓库而言,查询基本都是大数据量的全表扫描.合理利用分区表,既简化维护历史数据的工作,又能减少查询的io压力.
List分区和Range分区比较常用.
Hash分区可以通过将不同的分区放置到不同的表空间,优化io.
对于分区表的查询务必在where条件使用合理的分区字段,以使得全表扫描时只对分区扫描.
最常见的问题是循环分区,part_id=mod(month_id,n),只添加month_id=?,未添加part_id=?.导致并未只对分区进行扫描.;create table zyl (v_zyl varchar2(10));
insert into zyl values (201309);
select * from zyl where v_zyl=201309;
过滤器谓词为filter(TO_NUMBER(V_ZYL)=201309);
隐式转换导致原本正常的分区键不走分区.增加对分区表进行扫描时的io耗费,严重影响解释计划.
隐式转换同样导致类似的索引问题.
所以谓词类型尽量 匹配好,避免原本的分区扫描或索引扫描失效.;数据仓库中索引应用要比OLTP系统少的多.
B-TREE适合字段重复率非常高的表,适合频繁的DML操作的表.
位图索引适合字段重复率非常高的表,而且占用空间非常小,但是不适合高并发DML操作.
不要轻易删除一条你不确定是否会起作用的索引.
复合索引中选择性强的字段放在前面,减少索引范围扫描的成本.
对于分区表,LOCAL索引比GLOBAL索引更适合数据仓库环境,GLOBAL索引只创建在LOCAL索引无法满足条件时.
;并行查询、并行DDL、并行DML
HintAlter session Force Parallel表和索引上的并行度系统参数
表和索引的并行是不建议加上的,多使用Hint.
数据仓库中对于过程中hint的并行度设置,必须对整个工作流执行期间数据库繁忙程度有个清晰的认识,降低繁忙期的并行度,增加空闲期的并行度,可以提高整个工作流的效率.
一般开发工作中的查询尽量使用并行度低的hint,在数据库繁忙期使用并行度高的hint会导致查询更慢.;常用的basic压缩模式.
对数据重复率较高的表进行压缩时,能节省较多的表空间.经过压缩,表中所含数据块数目减少.查询中对表进行扫描时,读入的数据块的数目会少很多,读io性能会显著提升.
数据写入压缩表时,系统开销会略有提升,写入性能略有下降,但是差距并不明显.
对于成熟的数据仓库来说,数据表一经插入基本不会进行修改,所以压缩是一种不错的选择.由于查询性能的提升,工作流的执行效率反而可能会提升.
文档评论(0)