oracle数据库的分区表大致分为四种:范围分区表、hash分区表、列表分区表、复合分区表。
什么时候适合使用分区表呢:官方给的建议是当表大于2GB 或表中包含不必要的历史数据时。
分区表的优点是:1、由于数据是分别存储在不同的分区中,减少数据损坏的可能性;2、可以把分区映射到不同的磁盘上,减少I/O压力;3、可以单独对分区进行备份和恢复,提供管理性和可用性。
为了测试分区表,我们首先创建4个小的表空间
首先,我们创建范围分区表,顾名思义,范围分区就是根据表的列值的大小进行分区,值的大小决定了数据存储在哪个分区上
接下来,我们创建范围分别表, 它跟非分区表的创建语句基本一下,就是需要在指定好表的列后,增加根据某列的大小设置保存的分区和使用的表空间,使用关键字range by,这里我们对create_time时间类型的字段进行分区
点击( 此处 )折叠或打开
接下来,创建一个本地索引local ,本地索引与全局索引的区别在于全局索引在创建global子句时可以指定索引的范围值
最后就是需要插入数据验证了,我们这里先杀入200行看看效果,
什么时候适合使用分区表呢:官方给的建议是当表大于2GB 或表中包含不必要的历史数据时。
分区表的优点是:1、由于数据是分别存储在不同的分区中,减少数据损坏的可能性;2、可以把分区映射到不同的磁盘上,减少I/O压力;3、可以单独对分区进行备份和恢复,提供管理性和可用性。
为了测试分区表,我们首先创建4个小的表空间
点击(此处)折叠或打开
- create tablespace sale01 datafile '/oracle/database/oradata/indsdb/sale01.dbf' size 5m autoextend next 5m maxsize 2g;
- create tablespace sale02 datafile '/oracle/database/oradata/indsdb/sale02.dbf' size 5m autoextend next 5m maxsize 2g;
- create tablespace sale03 datafile '/oracle/database/oradata/indsdb/sale03.dbf' size 5m autoextend next 5m maxsize 2g;
- create tablespace sale04 datafile '/oracle/database/oradata/indsdb/sale04.dbf' size 5m autoextend next 5m maxsize 2g
接下来,我们创建范围分别表, 它跟非分区表的创建语句基本一下,就是需要在指定好表的列后,增加根据某列的大小设置保存的分区和使用的表空间,使用关键字range by,这里我们对create_time时间类型的字段进行分区
点击( 此处 )折叠或打开
- create table RECORD_partition
- (
- ID CHAR(32) primary key,
- ENTERPRISE_ID VARCHAR2(32) not null,
- OPERATOR_ID CHAR(32),
- TEMPLATE_ID CHAR(32),
- WORK_CODE CHAR(10),
- NAME VARCHAR2(300) not null,
- CREATE_TIME DATE,
- ACTUAL_LONGITUDE NUMBER(9,6),
- ACTUAL_LATITUDE NUMBER(8,6),
- ACTUAL_LOCDESC VARCHAR2(500),
- CONTENT VARCHAR2(1000),
- DELETE_STATE NUMBER(1),
- PROVINCE_NAME VARCHAR2(128) default '--',
- CITY_NAME VARCHAR2(128) default '--',
- COUNTY_NAME VARCHAR2(128) default '--',
- PIC_NUM NUMBER default 0 not null
- )
- partition by range(CREATE_TIME)
- (
- partition part01_2013 values less than (to_date('2014-01-01','yyyy-mm-dd')) tablespace sale01,
- partition part02_2014 values less than (to_date('2015-01-01','yyyy-mm-dd')) tablespace sale02,
- partition part03_2015 values less than (to_date('2016-01-01','yyyy-mm-dd')) tablespace sale03,
- partition part04_2016 values less than (maxvalue) tablespace sale04
- )
点击(此处)折叠或打开
- create index record_partition_idx on record_partition(OPERATOR_ID)
- local
- (
- partition idx_part01_2013 tablespace sale01,
- partition idx_part02_2014 tablespace sale02,
- partition idx_part03_2015 tablespace sale03,
- partition idx_part04_2016 tablespace sale04
- )
点击(此处)折叠或打开
- SQL> select table_name,partition_name,tablespace_name from user_tab_partitions where table_name = upper('record_partition');
TABLE_NAME PARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
RECORD_PARTITION PART01_2013 SALE01
RECORD_PARTITION PART02_2014 SALE02
RECORD_PARTITION PART03_2015 SALE03
RECORD_PARTITION PART04_2016 SALE04
- SQL> insert into record_partition select * from record where rownum<=200 ;
-
- 200 rows inserted
-
- SQL> select count(*) from record_partition partition(part04_2016);
-
- COUNT(*)
- ----------
- 13
-
- SQL> select count(*) from record_partition partition(part03_2015);
-
- COUNT(*)
- ----------
- 0
-
- SQL> select count(*) from record_partition partition(part02_2014);
-
- COUNT(*)
- ----------
- 0
-
- SQL> select count(*) from record_partition partition(part01_2013);
-
- COUNT(*)
- ----------
- 187
-
- SQL> select count(*) from record_partition ;
-
- COUNT(*)
- ----------
- 200
-
- SQL>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27039319/viewspace-2121065/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27039319/viewspace-2121065/