row movement // 分区表

Alter table table_name enable row movement;oracle

通查在三种情景下,须要启用row movement性能

1:分区表spa

当咱们容许分区表的分区键是可更新的时候,若是分区键的更新致使当前修改的数据条目须要移动到其余分区,此时就会发生rowid的改变.net

2:闪回操做对象

在闪回操做时,咱们一样须要开启表的row movement特性。blog

3:回收空间get

在收缩空间时,也会形成行的移动.hash

Shrink space操做(without  compact)会致使全部已经打开的游标失效,所以须要谨慎使用.it

select owner, row_movement from dba_tables where table_name = 'A';  查看当前table 的 row 状态io

1、建立分区表
分区表分为四类:一、范围分区表 二、列表分区表 三、哈希分区表 四、组合分区表

CREATE TABLE range_example(
     range_key_column DATE,
     DATA VARCHAR2(20),
     ID integer
 ) PARTITION BY RANGE(range_key_column)
 (
     PARTITION part01 VALUES LESS THAN (TO_DATE('2008-07-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs01,
     PARTITION part02 VALUES LESS THAN (TO_DATE('2008-08-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs02,
     PARTITION part03 VALUES LESS THAN (TO_DATE('2008-09-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs03
);

CREATE TABLE list_example(
     dname VARCHAR2(10),
     DATA VARCHAR2(20)
)PARTITION BY LIST(dname)
(
      PARTITION part01 VALUES('ME','PE','QC','RD'),
      PARTITION part02 VALUES('SMT','SALE')
);

CREATE TABLE hash_example(
      hash_key_column DATE,
      DATA VARCHAR2(20)
) PARTITION BY HASH(hash_key_cloumn)
(
     PARTITION part01 ,
     PARTITION part02
)

 

CREATE TABLE range_hash_example(
 range_column_key DATE,
 hash_column_key INT,
 DATA VARCHAR2(20)
)
PARTITION BY RANGE(range_column_key)
SUBPARTITION BY HASH(hash_column_key) SUBPARTITIONS 2
(
   PARTITION part_1 VALUES LESS THAN (TO_DATE('2008-08-01','yyyy-mm-dd'))(
      SUBPARTITION part_1_sub_1,
      SUBPARTITION part_1_sub_2,
      SUBPARTITION part_1_sub_3
   ),
   PARTITION part_2 VALUES LESS THAN (TO_DATE('2008-09-01','yyyy-mm-dd'))(
      SUBPARTITION part_2_sub_1,
      SUBPARTITION part_2_sub_2
   )
);

普通表转为分区表

 

分区表

优势:

a.改善查询性能:对分区对象的查询能够仅搜索本身关心的分区,提升检索速度。

b.加强可用性:若是表的某个分区出现故障,表在其余分区的数据仍然可用。

c.维护方便:若是表的某个分区出现故障,须要修复数据,只修复该分区便可。

d.均衡I/O:能够把不一样的分区映射到磁盘以平衡I/O,改善整个系统性能。

 

缺点:

分区表相关,已经存在的表没有方法能够直接转化为分区表。不过oracle提供了在线重定义表的功能

相关文章
相关标签/搜索