Oracle_的分区技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分区索引示例
CREATE INDEX month_ix ON sales(sales_month) GLOBAL PARTITION BY RANGE(sales_month) (PARTITION pm1_ix VALUES LESS THAN (2) PARTITION pm2_ix VALUES LESS THAN (3) PARTITION pm3_ix VALUES LESS THAN (4) PARTITION pm4_ix VALUES LESS THAN (5) PARTITION pm5_ix VALUES LESS THAN (6) PARTITION pm6_ix VALUES LESS THAN (7) PARTITION pm7_ix VALUES LESS THAN (8) PARTITION pm8_ix VALUES LESS THAN (9) PARTITION pm9_ix VALUES LESS THAN (10) PARTITION pm10_ix VALUES LESS THAN (11)
Hash分区的特点
基于分区字段的hash值,自动将记录插入 到相应分区 分区一般是2的幂 易于实施 总体性能最佳 适合于静态数据 Hash 分区适合于数据的均匀存储 Hash分区特别适合于PDML和Partitionwise join
List 分区
CREATE TABLE sales_list (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_state VARCHAR2(20), sales_amount NUMBER(10), sales_date DATE) PARTITION BY LIST(sales_state) ( PARTITION sales_west VALUES('California', 'Hawaii'), PARTITION sales_east VALUES ('New
在性能、高可用和可管理性之间进行平衡
分区索引策略选择
索引字段是表分区字段的前缀?
Local prefixed
yes NO 该非分区字段是唯一索引? yes
global prefixed
Local non-prefixed
NO 是否性能在可承受范围,而分区 的可管理性、可用性更重要? yes NO 是数据仓库/交易系统? DSS OLTP Global prefixed
分区表的管理功能
分区的增加 分区的删除 分区的合并merge 分区的清空truncate 分区的交换exchange 分区的压缩coalese 分区的移动move 分区的分离split 修改分区的物理属性
分区交换功能
通过交换数据段,实现分区和非分区表的 数据交换,以及子分区和分区表的数据交 换 非常快捷的数据移动方式。特别是没有 validation和索引维护操作时 Local 索引自动维护 Global索引必须重建
Composite 分区的特点
Oracle支持的Composite分区:
range-hash Range-list
既适合于历史数据,又适合于数据均匀分 布 与范围分区一样提高可用性和可管理性 更好的PDML和partition-wise joins特性 实现粒度更细的操作 支持符合local indexes
分区表索引的使用
OLTP系统中的建议
Global和unique local index性能优于nonunique local index Local index提供了更好的可用性
决策支持系统中的建议
Local index更适合于数据装载和分区维护 在大量数据统计时,能充分利用local index的并 行查询能力
分区字段 Values less than必须是确定值,最后一个 可以是maxvalue 每个分区可以单独指定物理属性
Range分区的特点
最早、最经典的分区方法 Range分区通过对分区字段值的范围进行分区 Range分区特别适合于按时间周期进行数据的存储:日、周、月、年 等 数据管理能力强 数据迁移 数据备份 数据交换 范围分区的数据可能不均匀 范围分区与记录值有关,实施难度和可维护性相对较差
Local non-prefixed
分区表设计原则
表的大小:当表的大小超过2GB,或对于OLTP系统,表记录超过 1000万时,都应该考虑对表进行分区 数据访问特性:基于表的大部分查询应用,只访问表中少量的数据。 对于这样的表进行分区,可充分利用分区排除无关数据查询的特性 数据维护:按时间段删除成批的数据,对于这样的表需要考虑进行分 区,以满足维护需要 数据备份和恢复:按时间周期进行表空间备份时,将分区与表空间建 立对应关系 只读数据:如果一个表中大部分数据都是只读,通过对表进行分区, 可将只读数据存储在只读表空间,对于数据的备份有利 OLAP并行数据操作
CREATE TABLE quarterly_regional_sales (deptno NUMBER, item_no VARCHAR2(20), txn_date DATE, txn_amount NUMBER, state VARCHAR2(2)) PARTITION BY RANGE (txn_date) SUBPARTITION BY LIST (state) ( PARTITION q1_1999 VALUES LESS THAN(TO_DATE('1-APR-1999','DD-MON-YYYY')) (SUBPARTITION q1_1999_northwest VALUES ('OR', 'WA'), SUBPARTITION q1_1999_southwest VALUES ('AZ', 'UT', 'NM'), SUBPARTITION q1_1999_northeast VALUES ('NY', 'VM', 'NJ'), SUBPARTITION q1_1999_southeast VALUES ('FL', 'GA'), SUBPARTITION q1_1999_northcentral VALUES ('SD', 'WI'), SUBPARTITION q1_1999_southcentral VALUES ('NM', 'TX')), PARTITION q2_1999 VALUES LESS THAN(TO_DATE('1-JUL-1999','DD-MON-YYYY')) (SUBPARTITION q2_1999_northwest VALUES ('OR', 'WA'), SUBPARTITION q2_1999_southwest VALUES ('AZ', 'UT', 'NM'), SUBPARTITION q2_1999_northeast VALUES ('NY', 'VM', 'NJ'), SUBPARTITION q2_1999_southeast VALUES ('FL', 'GA'), SUBPARTITION q2_1999_northcentral VALUES ('SD', 'WI'), SUBPARTITION q2_1999_southcentral VALUES ('NM', 'TX')), PARTITION q3_1999 VALUES LESS THAN (TO_DATE('1-OCT-1999','DD-MON-YYYY'))
List 分区的特点
List分区通过对分区字段的离散值进行分区 List分区是不排序的,而且分区之间也没有 关联 List分区适合于对数据离散值进行控制 List分区只支持单个字段 List分区具有与range分区相似的优缺点:
数据管理能力强
各分区的数据可能不均匀
Composite 分区
分区索引
Global index必须是范围分区---9i以前 Global index可以是hash 分区---10g新 特性 Global index不支持bitmap index Unique index 必须是prefixed,或者包含分 区字段 Local index(non-prefixed,non-unique)可 以不包含分区字段
分区索引
分区表索引的分类
Local prefixed index Local non-prefixed index Global prefixed index Non partition index
Global index 的分区不同于表分区 Local索引的分区与表分区相同 An index is prefixed if it is partitioned on a left prefix of the index columns 分区表上的非分区索引等同于global 索引
Oracle 性能调整
Oracle的分区技术
分区技术内容
什么是分区? 分区的好处? 如何实施分区? 如何评估分区的效果?
分区概述
大数据对象(表、索引)被分成小物理段 当分区表建立时,记录基于分区字段值被 存储到相应分区 分区字段值可以修改.(row movement enabled) 分区可以存储在不同的表空间 分区可以有不同的物理存储参数 分区支持IOT表、对象表、LOB字段 Varrays等
分区方法
分区方法
Range partition ---8 Hash partition ---8i List partition ---9i Composite partition -8i
Range 分区示例
CREATE TABLE sales_range (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_amount NUMBER(10), sales_date DATE) COMPRESS PARTITION BY RANGE(sales_date) ( PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')), PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')), PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')), PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY')));
分区交换的应用பைடு நூலகம்
ETL
在源系统中,将需要抽取的数据以如下语句形式 抽取到建立在单独表空间的中间表上:
Create table … as select … insert /*+
Hash 分区
CREATE TABLE sales_hash (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_amount NUMBER(10), week_no NUMBER(2)) PARTITION BY HASH(salesman_id) PARTITIONS 4;
分区技术的效益和目标
性能 Select和DML只访问指定分区 并行DML操作 Partition-wise join 可管理性 历史数据清除 提高备份性能 指定分区的数据维护操作 可用性 将故障局限在分区中 缩短恢复时间 分区目标优先级 高性能->数据维护能力->实施难度->高可用性(故障屏蔽能力)