您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle高级技术之大数据处理70
Oracle高级技术---大数据处理交流内容分区技术报表优化技术并行处理应用经验Oracle的分区技术分区技术内容•什么是分区?•分区的好处?•如何实施分区?•如何评估分区的效果?Oracle的分区技术基本原理•分而治之SB_ZSXX按年度进行分区2003200420052006分区概述大数据对象(表,索引)被分成小物理段当分区表建立时,记录基于分区字段值被存储到相应分区。分区字段值可以修改。(rowmovementenabled)分区可以存储在不同的表空间分区可以有不同的物理存储参数分区支持IOT表,对象表,LOB字段,varrays等分区技术的效益和目标性能–Select和DML操作只访问指定分区–并行DML操作–Partition-wiseJoin可管理性:数据删除,数据备份–历史数据清除–提高备份性能–指定分区的数据维护操作可用性–将故障局限在分区中–缩短恢复时间分区目标优先级–高性能–数据维护能力-实施难度–高可用性(故障屏蔽能力)分区方法分区方法:–范围---8–Hash---8i–列表---9i–组合---8iRangepartitioningHashpartitioningCompositepartitioningListpartitioning123CREATETABLEsales(acct_noNUMBER(5),personVARCHAR2(30),sales_amountNUMBER(8),week_noNUMBER(2))PARTITIONBYRANGE(week_no)(PARTITIONP1VALUESLESSTHAN(4)TABLESPACEdata0,PARTITIONP2VALUESLESSTHAN(8)TABLESPACEdata1,...…PARTITIONP13VALUESLESSTHAN(53)TABLESPACEdata12);分区字段:week_no.VALUESLESSTHAN必须是确定值每个分区可以单独指定物理属性123范围分区例•最早、最经典的分区算法•Range分区通过对分区字段值的范围进行分区•Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等。•数据管理能力强–数据迁移–数据备份–数据交换•范围分区的数据可能不均匀•范围分区与记录值相关,实施难度和可维护性相对较差范围分区特点Hash分区例createtableCUSTOMERS(...columndefinitions...)pctfree0nologgingstorage(initial40mnext40mpctincrease0)partitionbyhash(customer_no)partitions8storein(cust_data01,cust_data02)createtableCUSTOMERS(...columndefinitions...)pctfree0nologgingstorage(initial40mnext40mpctincrease0)partitionbyhash(customer_no)(partitioncust_p01tablespacecust_data01,partitioncust_p02tablespacecust_data02,partitioncust_p03tablespacecust_data03,partitioncust_p04tablespacecust_data04,partitioncust_p05tablespacecust_data05,partitioncust_p06tablespacecust_data06,partitioncust_p07tablespacecust_data07,partitioncust_p08tablespacecust_data08)Hash分区特点•基于分区字段的HASH值,自动将记录插入到指定分区。•分区数一般是2的幂•易于实施•总体性能最佳•适合于静态数据•HASH分区适合于数据的均匀存储•HASH分区特别适合于PDML和partition-wisejoins。•支持(hash)localindexes•9i不支持(hash)globalindexes•10g支持(hash)globalindexesHASH分区•数据管理能力弱•HASH分区对数据值无法控制列表分区例createtableaddresses(...columndefinitions...)pctfree0nologgingstorage(initial40mnext40mpctincrease0)partitionbylist(city_name)(partitionaddr_p01values('WELLINGTON')tablespaceaddr_data01,partitionaddr_p02values('CHRISTCHURCH')tablespaceaddr_data02,partitionaddr_p03values('DUNEDIN','INVERCARGILL')tablespaceaddr_data03,partitionaddr_p04values('AUCKLAND')tablespaceaddr_data04,partitionaddr_p05values('HAMILTON','ROTORUA','TAURANGA')tablespaceaddr_data05)列表分区特点•List分区通过对分区字段的离散值进行分区。•List分区是不排序的,而且分区之间没有关联关系•List分区适合于对数据离散值进行控制。•List分区只支持单个字段。•List分区具有与范围分区相似的优缺点–数据管理能力强–List分区的数据可能不均匀–List分区与记录值相关,实施难度和可维护性相对较差复合分区例createtabledaily_trans_data(...columndefinitions...)partitionbyrange(trans_datetime)subpartitionbyhash(customer_no)subpartitions8storein(dtd_data01,dtd_data02)(partitiondtd_20010620valueslessthan(to_date('21-jun-2001','dd-mon-yyyy'))(subpartitiondtd_20010620_s01,subpartitiondtd_20010620_s02,subpartitiondtd_20010620_s03tablespacedtd_data03,subpartitiondtd_20010620_s04tablespacedtd_data04,subpartitiondtd_20010620_s05tablespacedtd_data05,subpartitiondtd_20010620_s06tablespacedtd_data06,subpartitiondtd_20010620_s07tablespacedtd_data07,subpartitiondtd_20010620_s08tablespacedtd_data08),partitiondtd_20010621valueslessthan(to_date('22-jun-2001','dd-mon-yyyy')),partitiondtd_20010622valueslessthan(to_date('23-jun-2001','dd-mon-yyyy'))subpartitions4)复合分区图示复合分区特点•Oracle支持的Composite分区:•Range-Hash,Range-List•既适合于历史数据,又适合于数据均匀分布•与范围分区一样提供高可用性和管理性•更好的PDML和partition-wisejoins性能•实现粒度更细的操作•支持复合localindexes•不支持复合compositeglobalindexes?分区索引不分区分区不分区分区表索引√√√√GlobalNonpartitionedindexLocalpartitionedindexGlobalPartitionedIndex不同的分区索引绍兴杭州温州03年04年…08年分区索引•分区表索引的分类:–LocalPrefixedindex–LocalNon-prefiexedindex–GlobalPrefixedindex–NonPartitionIndexGlobal索引的分区不同与表分区Local索引的分区与表分区相同Anindexisprefixedifitispartitionedonaleftprefixoftheindexcolumns.分区表上的非分区索引等同于Global索引分区索引•Global索引必须是范围分区---9i之前•Global索引可以是HASH分区--10g新特性•Global索引不支持Bitmap索引•Unique索引必须是prefixed,或者包含分区字段•Local索引(non-prefixed,non-unique)可以不包含分区字段createindexcust_idx1oncustomers(customer_name)globalpartitionbyrange(customer_name)(partitioncust_p01valueslessthan(‘H’)tablespacecust_index01,partitioncust_p02valueslessthan(‘N’)tablespacecust_index02,partitioncust_p03valueslessthan(‘T’)tablespacecust_index03,partitioncust_p04valueslessthan(MAXVALUE)tablespacecust_index04)createindexcust_idx2oncustomers(customer_no)local(partitioncust_idx_p01tablespacecust_index01,partitioncust_idx_p02tablespacecust_index02,partitioncust_idx_p03tablespacecust_index03,partitioncust_idx_p04tablespacecust_index04,partitioncust_idx_p05tablespacecust_index05,partitioncust_idx_p06tablespacecust_index06,partitioncust_idx_p07tablespacecust_index07,partitioncust_idx_p08tablespacecust_index08)createindexcust_idx3oncustomers(customer_type)local;分区索引举例分区表索引的使用•OLTP系统中的建议–Global和uniquelocalindex性能优于nonuniquelocalindex–Localindex提供了更好的可用性•数据仓库系统中的建议–Localindex更适合于数据装载和分区维护–在大量数据统计时,能充分利用Localindex并行查询能力•在性能、高可用性和可管理性之间进行平衡索引字段是表分区字段的前缀?该非分区字段是唯一索引?LocalPrefixed是否性能在可承受范围,而分区的可管理性、可用性更重要?GlobalPrefixedLocalNon-prefixed是数据仓库/交易系统?LocalNon-prefixedGlobalPrefixedYesYesYesNoNoNoOLTPDSS分区索引选择策略分
本文标题:Oracle高级技术之大数据处理70
链接地址:https://www.777doc.com/doc-13247 .html