[三思笔记]全面学习分区表及分区索引

上传人:我*** 文档编号:133117548 上传时间:2020-05-24 格式:PDF 页数:39 大小:363.41KB
返回 下载 相关 举报
[三思笔记]全面学习分区表及分区索引_第1页
第1页 / 共39页
[三思笔记]全面学习分区表及分区索引_第2页
第2页 / 共39页
[三思笔记]全面学习分区表及分区索引_第3页
第3页 / 共39页
[三思笔记]全面学习分区表及分区索引_第4页
第4页 / 共39页
[三思笔记]全面学习分区表及分区索引_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《[三思笔记]全面学习分区表及分区索引》由会员分享,可在线阅读,更多相关《[三思笔记]全面学习分区表及分区索引(39页珍藏版)》请在金锄头文库上搜索。

1、 三思笔记 全面学习分区表及分区索引 君三思QQ群 59666289 三思笔记三思笔记 全面学习分区表及分区索引全面学习分区表及分区索引 2008 04 152008 04 152008 04 15 2008 04 15 关于分区表和分区索引关于分区表和分区索引 2008 04 152008 04 152008 04 15 2008 04 15 WHENWHENWHEN WHEN 2008 04 172008 04 172008 04 17 2008 04 17 When 使用 Range 分区 When 使用 Hash 分区 When 使用 List 分区 When 使用组合分区 HOWHO

2、WHOW HOW 2008 04 232008 04 232008 04 23 2008 04 23 如何创建如何创建 创建 range 分区 创建 hash 分区 创建 list 分区 创建 range list 分区 创建 range hash 分区 公共准则 如何管理如何管理 管理表分区管理表分区 增加表分区 add partition 收缩表分区 coalesce partitions 删除表分区 drop partition 交换表分区 Exchange Partitions 合并表分区 Merge Partitions 修改 list 表分区 Add Drop Values 拆分表

3、分区 Split Partition 截断表分区 Truncate Partition 移动表分区 Move Partition 重命名表分区 Rename Partition 修改表分区默认属性 Modify DefaultAttributes 修改表分区当前属性 Modify Partition 修改表子分区模板 Set Subpartition Template 三思笔记 全面学习分区表及分区索引 君三思QQ群 59666289 管理索引分区管理索引分区 增加索引分区 Adding Index Partitions 删除索引分区 Dropping Index Partitions 重编译

4、索引分区 Rebuilding Index Partitions 重命名索引分区 Renaming Index Partitions 拆分索引分区 Splitting Index Partitions 修改索引分区默认属性 Modifying DefaultAttributesof Index Partitions 修改索引分区当前属性 Modifying RealAttributes of Index Partitions 三思笔记 全面学习分区表及分区索引 君三思QQ群 59666289 关于分区表和分区索引关于分区表和分区索引 About About About About Partit

5、ionedPartitionedPartitioned Partitioned TablesTablesTables Tables andandand and Indexes Indexes Indexes Indexes 对于 10gR2 而言 基本上可以分成几类 Range 范围 分区 Hash 哈希 分区 List 列表 分区 以及组合分区 Range Hash Range List 对于表而言 常规意义上的堆组织表 上述分区形式都可以应用 甚至可以对某个分区指定 compress 属性 只不过分区依赖列不能是 lob long 之类数据类型 每个表的分区或子分区数的总数不能超过 102

6、4K 1 个 对于索引组织表 只能够支持普通分区方式 不支持组合分区 常规表的限制对于索引组织表同样有效 除此之外呢 还有一些其实的限制 比如要求索引组织表的分区依赖列必须是主键才可以等 注 本篇所有示例仅针对常规表 即堆组织表 对于索引 需要区分创建的是全局索引 或本地索引 全局索引 global index 即可以分区 也可以不分区 即可以建 range 分区 也可以建 hash 分区 即可建于分区表 又可创建于非分区表上 就是说 全局索引是完全独立的 因此它也需要我们更多的维 护操作 本地索引 local index 其分区形式与表的分区完全相同 依赖列相同 存储属性也相同 对于本 地索

7、引 其索引分区的维护自动进行 就是说你 add drop split truncate 表的分区时 本地索引会自动维护其 索引分区 Oracle 建议如果单个表超过 2G 就最好对其进行分区 对于大表创建分区的好处是显而易见的 这里不多论 述 why 而将重点放在 when 以及 how WHENWHENWHEN WHEN 一 一 WhenWhenWhen When 使用使用 RangeRangeRange Range 分区分区 Range 分区呢是应用范围比较广的表分区方式 它是以列的值的范围来做为分区的划分条件 将记录存放 到列值所在的 range 分区中 比如按照时间划分 2008 年

8、1 季度的数据放到 a 分区 08 年 2 季度的数据放到 b 分区 因此在创建的时候呢 需要你指定基于的列 以及分区的范围值 如果某些记录暂无法预测范围 可以 创建 maxvalue 分区 所有不在指定范围内的记录都会被存储到 maxvalue 所在分区中 并且支持指定多列做为 依赖列 后面在讲 how 的时候会详细谈到 二 二 WhenWhenWhen When 使用使用 HashHashHash Hash 分区分区 通常呢 对于那些无法有效划分范围的表 可以使用 hash 分区 这样对于提高性能还是会有一定的帮助 hash 分区会将表中的数据平均分配到你指定的几个分区中 列所在分区是依据

9、分区列的 hash 值自动分配 因此 你并不能控制也不知道哪条记录会被放到哪个分区中 hash 分区也可以支持多个依赖列 三 三 WhenWhenWhen When 使用使用 ListListList List 分区分区 List 分区与 range 分区和 hash 分区都有类似之处 该分区与 range 分区类似的是也需要你指定列的值 但这 又不同与 range 分区的范围式列值 其分区值必须明确指定 也不同与 hash 分区 通过明确指定分区值 你能 控制记录存储在哪个分区 它的分区列只能有一个 而不能像 range 或者 hash 分区那样同时指定多个列做为分 区依赖列 不过呢 它的单

10、个分区对应值可以是多个 三思笔记 全面学习分区表及分区索引 君三思QQ群 59666289 你在分区时必须确定分区列可能存在的值 一旦插入的列值不在分区范围内 则插入 更新就会失败 因此 通常建议使用list分区时 要创建一个default分区存储那些不在指定范围内的记录 类似range分区中的maxvalue 分区 四 四 WhenWhenWhen When 使用组合分区使用组合分区 如果某表按照某列分区之后 仍然较大 或者是一些其它的需求 还可以通过分区内再建子分区的方式将 分区再分区 即组合分区的方式 组合分区呢在 10g 中有两种 range hash range list 注意顺序哟

11、 根分区只能是 range 分区 子分区可以 是 hash 分区或 list 分区 提示 11g 在组合分区功能这块有所增强 又推出了 range range list range list list list hash 这就相当于除 hash 外三种分区方式的笛卡尔形式都有了 为什么会没有 hash 做为根分区的组合分区形式呢 再仔细回味一下 第二点 你一定能够想明白 HOWHOWHOW HOW 一 一 如何创建如何创建 如果想对某个表做分区 必须在创建表时就指定分区 我们可以对一个包含分区的表中的分区做修改 但 不能直接将一个未分区的表修改成分区表 起码在 10g 是不行的 当然你可能会说

12、 可以通过在线重定义的方式 但是这不是直接哟 这也是借助临时表间接实现的 创建表或索引的语法就不说了 大家肯定比我还熟悉 而想在建表 索引 同时指定分区也非常容易 只需要 把创建分区的子句放到 前就行啦 同时需要注意表的 row movement 属性 它用来控制是否允许修改列值所造 成的记录移动至其它分区存储 有 enable disable 两种状态 默认是 disable row movement 当 disable 时 如果 记录要被更新至其它分区 则更新语句会报错 下面分别演示不同分区方式的表和索引的创建 1 1 1 1 创建创建 rangerangerange range 分区分区

13、 语法如下 图 range partitioning gif 需要我们指定的有 column 分区依赖列 如果是多个 以逗号分隔 三思笔记 全面学习分区表及分区索引 君三思QQ群 59666289 partition 分区名称 valuesless than 后跟分区范围值 如果依赖列有多个 范围对应值也应是多个 中间以逗号分隔 tablespace clause 分区的存储属性 例如所在表空间等属性 可为空 默认继承基表所在表空间的 属性 创建一个标准的创建一个标准的 rangerangerange range 分区表 分区表 JSSWEB create table t partition

14、range id number name varchar2 50 2partition by range id 3partition t range p1 valueslessthan 10 tablespace tbspart01 4partition t range p2 valueslessthan 20 tablespace tbspart02 5partition t range p3 values lessthan 30 tablespace tbspart03 6partition t range pmax valueslessthan maxvalue tablespace t

15、bspart04 7 表已创建 要查询创建分区的信息 可以通过查询 user part tables user tab partitions 两个数据字典 索引分区 组织分区等信息也有对应的数据字典 后续示例会逐步提及 user part tables 记录分区的表的信息 user tab partitions 记录表的分区的信息 例如 JSSWEB select table name partitioning type partition count 2From user part tablesuser part tablesuser part tables user part tables

16、 where table name T PARTITION RANGE TABLE NAMEPARTITIPARTITION COUNT T PARTITION RANGERANGE4 JSSWEB select partition name high value tablespace name 2from user tab partitionsuser tab partitionsuser tab partitions user tab partitions where table name T PARTITION RANGE 3orderby partition position PARTITION NAMEHIGH VALUETABLESPACE NAME T RANGE P110TBSPART01 T RANGE P220TBSPART02 T RANGE P330TBSPART03 T RANGE PMAXMAXVALUETBSPART04 创建创建 globalglobalglobal global 索引索引 rangerangerange range 分区 分区 JSSW

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号