方案思路:有一张暴增的数据表(10亿级别),以后需求需要提高单条查询性能, 这个表有个唯一ID,
假设是UUID,采用区分首字母的方法,不同字母的数据入到不同的物理文件中。
第一步:
查找数据库服务器本机 物理文件存放位置 例如 ,D:\oracle\product\10.2.0\oradata\database
在此目录下新建文件夹 partition 。用于存放分区表 下不同表空间的dbf(物理文件)。
第二步:
建立分区表需要的表空间 。
CREATE TABLESPACE tablespace_a LOGGING DATAFILE 'D:\oracle\product\10.2.0\oradata\database\partition\tablespace_a_0.DBF ' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M EXTENT MANAGEMENT LOCAL;
CREATE TABLESPACE tablespace_b LOGGING DATAFILE 'D:\oracle\product\10.2.0\oradata\database\partition\tablespace_b_0.DBF ' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 100M EXTENT MANAGEMENT LOCAL;
第三步:
建立分区表
---create by cphmvp 20131220
create table tab_page_relation_partition
(
UNIQUE_ID CHAR(32) not null,
DATA_ID CHAR(32),
NICK_ID NUMBER,
URL VARCHAR2(512),
UPDATE_TIME DATE,
INSERT_TIME DATE default sysdate not null,
LAST_CRAWLER_TIME DATE,
MARK NUMBER default 0 not null
)
--根据unique_id区分 数据,逻辑上独立,物理上分开
partition by range(UNIQUE_ID)
(
partition part_a values less than('b') tablespace tablespace_a,
partition part_b values less than(maxvalue) tablespace tablespace_b
);
四:
插入测试
INSERT INTO tab_page_relation_partition (unique_id) VALUES('accccccccccc');
INSERT INTO tab_page_relation_partition (unique_id) VALUES('bccccccccccc');
INSERT INTO tab_page_relation_partition (unique_id) VALUES('cccccccccccc');
commit;
查询:
SELECT * FROM tab_page_relation_partition ;
select*from tab_page_relation_partition PARTITION(PART_A);
select*from tab_page_relation_partition PARTITION(PART_B);
五:
清理工作
删除表
DROP TABLE tab_page_relation_partition;
删除物理文件含表空间
DROP TABLESPACE TABLESPACE_A INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE TABLESPACE_B INCLUDING CONTENTS AND DATAFILES;