没有合适的资源?快使用搜索试试~ 我知道了~
首页分区、分片葵花宝典.pdf
分区、分片葵花宝典.pdf
需积分: 50 5 下载量 147 浏览量
更新于2023-07-05
评论
收藏 471KB PDF 举报
分区、分片葵花宝典,很好用的分区分片概念介绍和举例哦!想了解和深入了解分区、分片的都可以下载看看呢! 该PDF文件全面的介绍了分区、分片的类型和使用方法,注意事项等概念,十分的使用!
资源详情
资源评论
资源推荐
Copyright‐bocoxhycollecton2010‐05‐27
ORACLE分区、分片-葵花宝典
2010-05-27
关于分区表和分区索引 .............................................
WHEN .......................................................................
When 使用 Range 分区
When 使用 Hash 分区
When 使用 List 分区
When 使用组合分区
HOW .......................................................................
z 如何创建
创建 range 分区
创建 hash 分区
创建 list 分区
创建 range-list 分区
创建 range-hash 分区
公共准则
z 如何管理
管理表分区
增加表分区(add partition)
收缩表分区(coalesce partitions)
删除表分区(drop partition)
交换表分区(Exchange Partitions)
合并表分区(Merge Partitions)
修改 list 表分区--Add/Drop Values
拆分表分区(Split Partition)
截断表分区(Truncate Partition)
移动表分区(Move Partition)
重命名表分区(Rename Partition)
修改表分区默认属性(Modify Default Attributes)
修改表分区当前属性(Modify Partition)
修改表子分区模板(Set Subpartition Template)
管理索引分区
增加索引分区(Adding Index Partitions)
删除索引分区(Dropping Index Partitions)
重编译索引分区(Rebuilding Index Partitions)
重命名索引分区(Renaming Index Partitions)
拆分索引分区(Splitting Index Partitions)
Copyright‐bocoxhycollecton2010‐05‐27
修改索引分区默认属性(Modifying Default Attributes of Index Partitions)
修改索引分区当前属性(Modifying Real Attributes of Index Partitions)
Copyright‐bocoxhycollecton2010‐05‐27
关于分区表和分区索引(About Partitioned Tables and Indexes)
对于 10gR2 而言,基本上可以分成几类:
Range(范围)分区
Hash(哈希)分区
List(列表)分区
以及组合分区:Range-Hash,Range-List。
对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定 compress 属性)
,
只不过
分区依赖列不能是 lob,long 之类数据类型,每个表的分区或子分区数的总数不能超过 1024K-1 个。
对于索引组织表,只能够支持普通分区方式,不支持组合分区,常规表的限制对于索引组织表同样有效, 除此之
外呢,还有一些其实的限制,比如要求索引组织表的分区依赖列必须是主键才可以等。
注:本篇所有示例仅针对常规表,即堆组织表!
对于索引,需要区分创建的是全局索引,或本地索引:
z 全局索引(global index):即可以分区,也可以不分区。即可以建 range 分区,也可以建 hash 分区
,
即可建
于分区表,又可创建于非分区表上,就是说,全局索引是完全独立的,因此它也需要我们更多的维 护操作。
z 本地索引(local index):其分区形式与表的分区完全相同,依赖列相同,存储属性也相同。对于本 地索
引,其索引分区的维护自动进行,就是说你 add/drop/split/truncate 表的分区时,本地索引会自动维护其 索引分区。
Oracle 建议如果单个表超过 2G 就最好对其进行分区,对于大表创建分区的好处是显而易见的,这里不多论 述
why,而将重点放在 when 以及 how。
WHEN
一、When 使用 Range 分区
Range 分区呢是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放
到列值所在的 range 分区中,比如按照时间划分,2008 年 1 季度的数据放到 a 分区,08 年 2 季度的数据放到 b 分区,
因此在创建的时候呢,需要你指定基于的列,以及分区的范围值,如果某些记录暂无法预测范围,可以 创建 maxvalue
分区,所有不在指定范围内的记录都会被存储到 maxvalue 所在分区中,并且支持指定多列做为 依赖列,后面在讲
how 的时候会详细谈到。
二、When 使用 Hash 分区
通常呢,对于那些无法有效划分范围的表,可以使用 hash 分区,这样对于提高性能还是会有一定的帮助。
hash 分区会将表中的数据平均分配到你指定的几个分区中,列所在分区是依据分区列的 hash 值自动分配,因此 你并不
能控制也不知道哪条记录会被放到哪个分区中,hash 分区也可以支持多个依赖列。
三、When 使用 List 分区
List 分区与 range 分区和 hash 分区都有类似之处,该分区与 range 分区类似的是也需要你指定列的值,但这
又不同与 range 分区的范围式列值---其分区值必须明确指定,也不同与 hash 分区---通过明确指定分区值,你能 控制记
录存储在哪个分区。它的分区列只能有一个,而不能像 range 或者 hash 分区那样同时指定多个列做为分 区依赖列,不
过呢,它的单个分区对应值可以是多个。
你在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,则插入/更新就会失败,因此
通常建议使用 list 分区时,要创建一个 default 分区存储那些不在指定范围内的记录,类似range 分区中的 maxvalue
分区。
四、When 使用组合分区
如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以通过分区内再建子分区的方式将
分区再分区,即组合分区的方式。
Copyright‐bocoxhycollecton2010‐05‐27
组合分区呢在 10g 中有两种:range-hash,range-list。注意顺序哟,根分区只能是 range 分区,子分区可以
是 hash 分区或 list 分区。
提示:11g 在组合分区功能这块有所增强,又推出了 range-range,list-range,list-list,list-hash,这就相当于除
hash 外三种分区方式的笛卡尔形式都有了。为什么会没有 hash 做为根分区的组合分区形式呢,再仔细回味一下
第二点,你一定能够想明白~~。
HOW
一、如何创建
如果想对某个表做分区,必须在创建表时就指定分区,我们可以对一个包含分区的表中的分区做修改,但
不能直接将一个未分区的表修改成分区表(起码在 10g 是不行的,当然你可能会说,可以通过在线重定义的方
式
,
但是这不是直接哟,这也是借助临时表间接实现的)。
创建表或索引的语法就不说了,大家肯定比我还熟悉,而想在建表(索引)同时指定分区也非常容易,只需要
把创建分区的子句放到";"前就行啦,同时需要注意表的 row movement 属性,它用来控制是否允许修改列值所造
成的记录移动至其它分区存储,有 enable|disable 两种状态,默认是 disable row movement,当 disable 时,如果
记录要被更新至其它分区,则更新语句会报错。
下面分别演示不同分区方式的表和索引的创建:
1、创建 range 分区 语法如下,图:
[range_partitioning.gif]
需要我们指定的有:
z column:分区依赖列(如果是多个,以逗号分隔);
Copyright‐bocoxhycollecton2010‐05‐27
z partition:分区名称;
z
values less than:后跟分区范围值(如果依赖列有多个,范围对应值也应是多个,中间以逗号分隔);
z tablespace_clause:分区的存储属性,例如所在表空间等属性(可为空),默认继承基表所在表空间的 属
性。
① 创建一个标准的 range 分区表:
JSSWEB> create table t_partition_range (id number,name varchar2(50))
2 partition by range(id)(
3 partition t_range_p1 values less than (10) tablespace tbspart01,
4 partition t_range_p2 values less than (20) tablespace tbspart02,
5 partition t_range_p3 values less than (30) tablespace tbspart03,
6 partition t_range_pmax values less than (maxvalue) tablespace tbspart04
7 );
表已创建。
要查询创建分区的信息,可以通过查询 user_part_tables,user_tab_partitions 两个数据字典(索引分区、 组
织分区等信息也有对应的数据字典,后续示例会逐步提及)。
user_part_tables:记录分区的表的信息;
user_tab_partitions:记录表的分区的信息。
例如:
JSSWEB> select table_name,partitioning_type,partition_count
2 From user_part_tables where table_name='T_PARTITION_RANGE';
TABLE_NAME PARTITI PARTITION_COUNT
------------------------------ ------- ---------------
T_PARTITION_RANGE RANGE 4
JSSWEB> select partition_name,high_value,tablespace_name
2 from user_tab_partitions where table_name='T_PARTITION_RANGE'
3 order by partition_position;
PARTITION_NAME HIGH_VALUE TABLESPACE_NAME
------------------------------ ---------- --------------------
T_RANGE_P1 10 TBSPART01
T_RANGE_P2 20 TBSPART02
T_RANGE_P3 30 TBSPART03
T_RANGE_PMAX MAXVALUE TBSPART04
② 创建 global 索引 range 分区:
JSSWEB> create index idx_parti_range_id on t_partition_range(id)
2 global partition by range(id)(
3 partition i_range_p1 values less than (10) tablespace tbspart01,
4 partition i_range_p2 values less than (40) tablespace tbspart02,
5 partition i_range_pmax values less than (maxvalue) tablespace tbspart03);
索引已创建。
剩余37页未读,继续阅读
wangjingjing0428
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0