ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 学习之应用基础(3)

学习之应用基础(3)

原创 Linux操作系统 作者:simkyo 时间:2013-06-21 17:15:33 0 删除 编辑
续分区表
Hash分区:
  对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区会将表中的数据平均分配到你指定的几个分区中,列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中,hash分区也可以支持多个依赖列。
如:create table test (
transaction_id number primary key,
item_id number(8) not null
)
partition by hash(transaction_id)
( partition part_01 tablespace tablespace01,
partition part_02 tablespace tablespace02,
partition part_03 tablespace tablespace03
);
在这里,我们指定了每个分区的表空间。
List分区:
  List分区也需要指定列的值,其分区值必须明确指定,该分区列只能有一个,不能像range或者hash分区那样同时指定多个列做为分区依赖列,但它的单个分区对应值可以是多个。
  在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,则插入/更新就会失败,因此通常建议使用list分区时,要创建一个default分区存储那些不在指定范围内的记录,类似range分区中的maxvalue分区。
在根据某字段,如城市代码分区时,可以指定default,把非分区规则的数据,全部放到这个default分区。
如:
create table custaddr(
  id                     varchar2(15 byte)   not null,
  areacode   varchar2(4 byte)
 )
partition by list (areacode)
( partition t_list025 values ('025'), 
 partition t_list372 values ('372') ,
 partition t_list510 values ('510'),
partition p_other values (default)
)
组合分区:
       如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以通过分区内再建子分区的方式将分区再分区,即组合分区的方式。
  组合分区呢在10g中有两种:range-hash,range-list。注意顺序,根分区只能是range分区,子分区可以是hash分区或list分区。
如:
create table test
(
transaction_id number primary key,
transaction_date date
)
partition by range(transaction_date) subpartition by hash(transaction_id)
subpartitions 3 store in (tablespace01,tablespace02,tablespace03)
(
partition part_01 values less than(to_date(’2009-01-01’,’yyyy-mm-dd’)),
partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’)),
partition part_03 values less than(maxvalue)
);

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12961536/viewspace-764549/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-06-20

  • 博文量
    193
  • 访问量
    165517