oracle表分区的了解和使用

目录

🎈范围分区🎈

 🎈散列分区🎈

🎈 列表分区🎈

 🎈复合分区🎈

 🎈合并表分区🎈

 🎈拆分表分区🎈

🎈添加表分区🎈

🎈 删除表分区🎈


🎈表分区的作用🎈
        允许用户将表分成多个分区
        用户执行查询,只访问表中特定分区
        将不同分区存储在不同磁盘,提高访问性能和安全性
        可以独立备份和恢复每个分区
    不能分区的情况:
        表中包含非结构性数据,如:LOSB,LONGRAW或对象类型
        索引组织的表不能分区
    分区方法
        范围分区
        散列(hash)分区
        列表分区
        复合分区

🎈范围分区🎈

特点:以表中的一个列或一组列的值的范围分区

        使用方法:

create table bookInfo3
(
id number(3),
bookname varchar2(20),
author varchar2(20),
price number(10,2),
bnumber number(20)
)
partition by range(price)
(
partition p1 values less than(100),
partition p2 values less than(200),
partition p3 values less than(300),
partition p4 values less than(400),
partition p5 values less than(500)
);

在这里我们新建一个bookInfo3表并通过price对其进行范围分区,小于100为一个区,大于等于100小于200为一个区以此类推,那么怎么看分区呢?在这里的话使用查询语句在SQL plus里面进行查询就行了

select * from user_tab_partitions u where u.table_name='BOOKINFO3';

 🎈散列分区🎈

特点:允许用户对不具有逻辑范围的数据进行分区
           通过在分区键上执行HASH函数决定存储的分区
           通过hash算法将数据平均地分布到不同的分区

        使用方法:

create table bookInfo5
(
id number(3),
bookname varchar2(20),
author varchar2(20),
price number(10,2),
bnumber number(20)
)
partition by hash(id)
(
partition p1,
partition p2
);

insert into bookInfo5 values(1,'海底两万里','小赵',20,23);
insert into bookInfo5 values(2,'活着','小赵',123,23);
insert into bookInfo5 values(3,'猫和狗','小王',234,23);
insert into bookInfo5 values(4,'狂人日记','小王',345,23);
insert into bookInfo5 values(5,'海底两万里','小李',20,23);
insert into bookInfo5 values(6,'活着','小李',123,23);
insert into bookInfo5 values(7,'猫和狗','小周',234,23);
insert into bookInfo5 values(8,'狂人日记','小周',345,23);

        同样的我们在新建一个bookInfo5的表,插入数据后通过hash来进行分区

        查询p1分区的数据

select * from bookInfo5 partition(p1);

🎈 列表分区🎈

特点:允许用户将不相关的数据组织到一起

        使用方法:

create table bookInfo4
(
id number(3),
bookname varchar2(20),
author varchar2(20),
price number(10,2),
bnumber number(20)
)
partition by list(author)
(
partition p1 values('小王','小赵'),
partition p2 values('小李','小周')
);

insert into bookInfo4 values(1,'海底两万里','小赵',20,23);
insert into bookInfo4 values(2,'活着','小赵',123,23);
insert into bookInfo4 values(3,'猫和狗','小王',234,23);
insert into bookInfo4 values(4,'狂人日记','小王',345,23);
insert into bookInfo4 values(5,'海底两万里','小李',20,23);
insert into bookInfo4 values(6,'活着','小李',123,23);
insert into bookInfo4 values(7,'猫和狗','小周',234,23);
insert into bookInfo4 values(8,'狂人日记','小周',345,23);

        新建bookInfo4表并通过作者姓名进行列表分区

        查询p2分区的数据

select * from bookInfo4 partition(p2);

 🎈复合分区🎈

特点:范围分区与散列分区或列表分区的组合

        使用方法:

create table bookInfo6
(
id number(3),
bookname varchar2(20),
author varchar2(20),
price number(10,2),
bnumber number(20)
)
partition by range(price)
subpartition by hash(id)
subpartitions 3
(
 partition p1 values less than(200),
 partition p2 values less than(400),
 partition p3 values less than(600)
);

insert into bookInfo6 values(1,'海底两万里','小赵',20,23);
insert into bookInfo6 values(2,'活着','小赵',123,23);
insert into bookInfo6 values(3,'猫和狗','小王',234,23);
insert into bookInfo6 values(4,'狂人日记','小王',345,23);
insert into bookInfo6 values(5,'海底两万里','小李',20,23);
insert into bookInfo6 values(6,'活着','小李',123,23);
insert into bookInfo6 values(7,'猫和狗','小周',234,23);
insert into bookInfo6 values(8,'狂人日记','小周',345,23);

        新建bookInfo6表并对其进行复合分区

        subpartitions 3    --代表每一个range分区下有3个hash的子分区

        查询p2分区的数据

select * from bookInfo6 partition(p2);

 🎈合并表分区🎈

alter table bookInfo3 merge partitions p2,p3 into partition t1;

 🎈拆分表分区🎈

alter table bookInfo3 split partition t1 at (200) into(partition p2,partition p3);

🎈添加表分区🎈

alter table bookInfo3 add partition p6 values less than(600);

🎈 删除表分区🎈

alter table 表名  drop partition 分区名;        ---慎用,删除分区和分区中的数据

alter table 表名 truncate partition 分区名;        ---删除分区中的数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月与清酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值