oracle数据仓库优化.pptx
文本预览下载声明
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性能会显著提升.
数据写入压缩表时,系统开销会略有提升,写入性能略有下降,但是差距并不明显.
对于成熟的数据仓库来说,数据表一经插入基本不会进行修改,所以压缩是一种不错的选择.由于查询性能的提升,工作流的执行效率反而可能会提升.
显示全部