2011年7月25日月曜日

[分区表] 分区表类型

1. 说明

1-1. 分区可以存储于不同表空间
1-2. 如果分区键更新使得记录发生分区移动, 则会产生行迁移, 记录的 rowid 会改变. 如果表没开行移动功能会报错
1-3. 行迁移会更新这个表上的索引, 删除旧条目, 插入薪条目
1-4. 尽管行迁移内部是 delete 和 insert 的操作, 但去不会触发 delete 和 insert 的触发器, 会触发 update 触发器. 另外由于外键约束而不允许 delete 的子表也不会触发 delete 触发器


2. 分区类型

2-1. 列表分区 (list partitioning)
create table t (a number(1))
partition by list (a) (partition p1 values (1),partition p2 values (2));

2-2. 区间分区 (range partitioning)
create table t (a number)
partition by range (a) (partition p1 values less than (5),partition p2 values less than (maxvalue));

2-3. 散列分区 (hash partitioning), 分区个数应使用 2 的幂 (2,4,8,16...)
create table t (a number)
partition by hash (a) (partition p1 tablespace tbs01,partition p2 tablespace tbs02);

2-4. 组合分区 (区间-列表组合分区, 区间-散列组合分区)
# 可以指定分区个数 subpartition by list (col) subpartitions 2, 子分区的个数可以不同
# 在组合分区表中, 表和分区并没有分配段空间, 只有子分区才分配段空间, 创建组合分区表时要考虑子分区的存储
# 子分区若指定表空间, 则以子分区所指定表空间为准
# 子分区若未指定表空间, 则以其所在分区表空间为准
# 若其所在分区也未指定表空间, 则以该分区所在表指定的表空间为准
# 若表也未指定表空间, 则以该表所在用户默认表空间为准

2-4-1. 非模板模式
create table sales
(
    dt date,
    status varchar2(20)
)
partition by range(dt)
subpartition by list (status)
(
    partition p1 values less than (to_date('2003-01-01','yyyy-mm-dd')) tablespace p1_ts
    (
        subpartition p11 values ('active') tablespace p1_ts1,
        subpartition p12 values ('inactive') tablespace p1_ts2
    ),
    partition p2 values less than (to_date('2003-03-01','yyyy-mm-dd')) tablespace p2_ts
    (
        subpartition p21 values ('active') tablespace p2_ts1,
        subpartition p22 values ('inactive') tablespace p2_ts2
    )
);

2-4-2. 模板模式
create or replace table sales
(
    dt date,
    status varchar2(20)
)
partition by range(dt)
subpartition by list (status)
subpartition template
(
    subpartition sub1 values ('active') tablespace sub1_ts,
    subpartition sub2 values ('inactive') tablespace sub2_ts
)
(
    partition p1 values less than (to_date('2003-01-01','yyyy-mm-dd')) tablespace p1_ts,
    partition p2 values less than (to_date('2003-03-01','yyyy-mm-dd')) tablespace p2_ts
)

0 件のコメント:

コメントを投稿