连载:告诉你如何设计一个日访问量千万级别的系统,谈oracle的高级设计和开发(4)

(4)

当预计一个表的会达到千万级别甚至更高,选用分区表是个必须考虑的设计思路。

分区表可以理解为逻辑上一个表,物理上多个表的。通常为了提高性能,将不同的分区创建到不同的表空间(不同的表空间又可以再创建到不同的磁盘设备上,每个磁盘设备都拥有独立的IO读写磁头 ,这样能实现同时并发读写数据,提高并发性能的效果)

Oracle数据库通常提供对表的分区方法有三种:

        1、范围分区

        2、Hash分区(散列分区)

        3、复合分区

 

    示例:先建三个表空间。

create tablespace tb_mb01

datafile '/home1/oracle/oradata/member01.dbf' size 500M

 

create tablespace tb_mb02

datafile '/home1/oracle/oradata/member02.dbf' size 500M

 

create tablespace tb_mb03

datafile '/home1/oracle/oradata/member03.dbf' size 500M

 

 

a)、范围分区

根据会员ID分区建表:

 create tablememberBase

    (

        memberIDnumber(10) primary key,

       memberLoginName varchar2(40) not null,

        memberLoginPwd char(32) not null,

        …

       )

    partitionby range (memberID)

    (

    partition part_01 values less than(5000000) tablespace tb_mb01,

    partition part_02 values less than(10000000) tablespace tb_mb02,

    partition part_03 values less than(maxvalue) tablespace tb_mb03

   );

 

 

根据会员的memberID,500万以下的记录分配在第一个分区中,存放在tb_mb01表空间中,在500万到1千万之间的记录在第二个分区中,存放在tb_mb02表空间中,超过1000万的分配到第三个分区,存放在tb_mb03表空间中。

 

当然也可以根据需求,使用两个字段的范围分布来分区,如地区+性别。

 

Insert数据时,与使用普通表一样,

  insert intomemberBase

(memberID,memberLoginName,memberLoginPwd,…)

values(seq_memberID.nextVal,’zhangsan’,’加密算法后得到的密文’,...);

 

查询分区表记录,可指定查询某个分区,也可以不指定,当不指定分区是,若查询的条件是分区表创建的分区字段,如memberID,则系统会自动从对应的分区检索数据,若不是分区字段,则系统将不会按分区表原则策略来检索数据:

select * from memberBase partition(part_01);

select * from memberBase partition(part_02);

select * from memberBase t partition(part_03);

select * from memberBase t;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值