分区表是最为常用的性能优化手段之一,range分区又是分区表中使用频率极高的一种方法,通常根据时间来分区。
比如按照年划分,按照月份划分,按照小时划分等,根据数据生成的密集程度来合理安排。
如我我们的应用不是按照整年、整月、等易于区分的range,而是更随意一些的可以做到么?
只需要将年、月、日这些单位组合使用,就可以达到这个更加确切的分区目的,如下面的例子
create table apple (
比如按照年划分,按照月份划分,按照小时划分等,根据数据生成的密集程度来合理安排。
如我我们的应用不是按照整年、整月、等易于区分的range,而是更随意一些的可以做到么?
只需要将年、月、日这些单位组合使用,就可以达到这个更加确切的分区目的,如下面的例子
create table apple (
id int,
name varchar(10),
sale_day int,
sale_month int,
sale_year int)
partition by range (
sale_year,sale_month,sale_day
)
(
partition p1 values less than (2007,9,1) tablespace tbs1,
partition p2 values less than (2008,9,6) tablespace tbs2,
partition p3 values less than (2009,8,6) tablespace tbs3,
partition p4 values less than (2010,1,27) tablespace tbs1,
partition p5 values less than (maxvalue,maxvalue,maxvalue) tablespace users
);
DBA_TABLES.partitioned 查看是否为分区表
select table_name,partitioned from
DBA_TABLES
where table_name in('APPLE','EMP');
TABLE_NAME PAR
------------------------------ ---
EMP NO
APPLE YES
DBA_PART_TABLES.partition_count 查看分区个数
select owner,table_name,partition_count from
DBA_PART_TABLES
where table_name='APPLE';
OWNER TABLE_NAME PARTITION_COUNT
------------------------------ ------------------------------ ---------------
SYS APPLE 5
DBA_SEGMENTS.tablespace_name 表空间分布
SYS@OCM11G >set lines 200
SYS@OCM11G >select segment_name,partition_name,segment_type,tablespace_name from
DBA_SEGMENTS
where segment_name='APPLE';
SEGMENT_NA PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME
---------- ------------------------------ ------------------ ------------------------------
APPLE P1 TABLE PARTITION TBS1
APPLE P2 TABLE PARTITION TBS2
APPLE P3 TABLE PARTITION TBS3
APPLE P4 TABLE PARTITION TBS1
APPLE P5 TABLE PARTITION USERS
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1399589/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29047826/viewspace-1399589/