您的位置:首页 > 博客中心 > 数据库 >

Oracle实践--PL/SQL基础之表分区

时间:2022-03-10 17:09

create table person1( pid number primary key, birthday date ) partition by range (birthday)( partition p1 values less than (to_date(‘1980-01-01‘,‘yyyy-mm-dd‘)), partition p2 values less than (to_date(‘1990-01-01‘,‘yyyy-mm-dd‘)), --partition p1 values less than (maxvalue) ) insert into person1 values(1,‘ysjian‘,to_date(‘1965-02-03‘,‘yyyy-mm-dd‘)); insert into person1 values(2,‘ysjian‘,to_date(‘1985-02-03‘,‘yyyy-mm-dd‘)); insert into person1 values(3,‘ysjian‘,to_date(‘1995-02-03‘,‘yyyy-mm-dd‘)); select * from person1 partition(p2);

--散列分区:允许用户对不具有逻辑范围的数据进行分区,关键字:hash

-- 通过在分区键上执行hash函数决定存储的分区,将数据平均分配到不同的分区

create table person2(
      pid number primary key,
      pname varchar2(20),
      birthday date
)
partition by hash(birthday)(
         partition p1,
         partition p2,
         partition p3,
)

--partitions 3;上面四个分区等价这个

--列表分区:允许用户将不相关的数据组织在一起,关键字:list,values

create table person3(
      pid number primary key,
      birthday date,
      address varchar2(50)
)
partition by list(address)(
      partition hubei values(‘武汉‘,‘黄石‘,‘黄冈‘),
      partition shanxi values(‘西安‘,‘渭南‘,‘宝鸡‘)
)

--复合分区,关键字:subpartition

create table person4(
      pid number primary key,
      birthday date,
      address varchar2(50)
)
partition by range(birthday)
subpartition by hash(birthday)
subpartitions4(
     partition p1 values less than (to_date(‘1980-01-01‘,‘yyyy-mm-dd‘)),
     partition p2 values less than (to_date(‘1990-01-01‘,‘yyyy-mm-dd‘)),
     partition p3 values less than (to_date(‘2000-01-01‘,‘yyyy-mm-dd‘))
)

--分区的维护:
--1.新增分区:在最后一个分区之后添加新分区

alter table person1 add partition P4 values less than (4000);

--2.删除分区:删除一个指定的分区,分区的数据也随之删除

alter table person1 truncate partition P3;

--3.截断分区:删除指定分区中的所有记录,不记录日志,不可恢复

alter table person1 truncate partition P3;

--4.合并分区 -将范围分区或复合分区的两个相邻分区连接起来

alter table person1 merge partitions p1, p2 into partition p2;

--5.拆分分区 -将一个大分区中的记录拆分到两个分区中

alter table person1split partition p2 AT (1500) into (partition P21,partition P22);

/*

     小结:锁用于保护多用户环境下被修改的数据

           锁分为两种级别,即行级锁和表级锁

           表分区允许将一个表划分成几部分,以改善大型应用系统的性能

           分区方法包括范围分区、散列分区、复合分区和列表分区

           分区维护操作包括添加、删除、截断、合并和拆分分区

*/

文章来源:

Oracle实践--PL/SQL基础之表分区,布布扣,bubuko.com

热门排行

今日推荐

热门手游