加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle数据库的分区

发布时间:2021-04-02 17:42:25 所属栏目:站长百科 来源:网络整理
导读:分区 一般开拓中最常用的技能,首要针对付大数据量,频仍查询数据等需求 oracle 提供了 7种分区,本文首要先容较常用的几种 range 分区 地区分区,分区的时辰必需在建设表时指定 语法: create table (...) partition by range (filed) (partition r1 values

  • 分区

    一般开拓中最常用的技能,首要针对付大数据量,频仍查询数据等需求

    oracle 提供了 7种分区,本文首要先容较常用的几种

    • range 分区

      地区分区,分区的时辰必需在建设表时指定

      • 语法:

        create table (...) partition by range (filed) 
          	(partition r1 values less than (value));
          
          # value 为分区的依据,好比value=1000,即不高出1000的值城市存放在此分区,
          # 假如只有一个分区,那么大于1000的值便无法插入。可以指定value=maxvalue
      • 查察分区环境:

        全部分区的环境,可以通过 where 前提判定

        select * from user_table_partitions;
      • 查察分区数据:

        select * from table partition(r1);
      • 修改分区:

        add

        alter table tablename add partition r2 values less than (maxvalue);

        del

        alter table tablename drop partition r2;
      • 跨分区操纵

        更新数据时不行以跨分区操纵,好比更新之后的内容要从1分区移动到2分区,那么必要配置可移动的分区才可以跨分区查询,不然无法操纵。

        alter table tablename enable row movement;
      • 分区索引

        分区之后固然进步了查询的服从,但仅仅是进步了数据的范畴,依然必要成立分区索引,进一步进步服从。

        • 分区索引分为两大类
          • local; 在每个分区成立索引

            语法: create index index_name on table(field) local;

            查察: select * from user_ind_partitions;

            索引的字段必然是分区的字段

          • global; 全局索引

            • 一种是全局成立索引,这种方法分不分区都一样,不提议行使;

            • 前缀索引

              尚有一种是自界说索引的区间的索引,即前缀索引,这个长短常故意义的。

              语法: 必需指定 maxvalue

              create index index_name on table(field) global
                	partition by range(filed) (
                	partition r1 values less than(value),partition r2 values less than(maxvalue)
                  );
    • hash 分区

      实现了匀称的负载值分派,增进 hash 分区可以从头分派数据

      成立

      create table table_name (empno number,ename varchar(20)) 
        	partition by hash(empno) (partition p1,partition p2)

      查察分区布局

      select * from user_tab_partitions where table_name= "table_name";

      查察分区数据

      select * from table_name partition(p1);
    • list 分区

      建设

      create table table_name (
        	empno number,ename varchar(20),city varchar(20)
        	partition by list(city) (
        		partition east values("shanghai“)
        	)
        )
    • 复合分区 对range分区的再次hash分区

      • 建设

        create table table_name(
          	sno number,sname varchar(20)
          )
          partition by range (sno)
          subpartition by hash (sname) # 子分区
          subpartition 4               # 子分区分成4分
          (
          	partition p1 values less than(1000),partition p2 values less than(maxvalue)
          )
    • 隔断分区, 最常用及最好用

      是一种分区自动化的分区,可以指按时距离断分区,一向是 oracle 引觉得荣的一项技能

      语法:

      create table table_name (
        	sid int,sdata timestamp )
        	partition by range(sdata) 
        	interval (
        		numtoyminterval(1,"MONTH")  # 函数,计较月份
        					 )
        		(
        			partition p1 values less than (TIMESTAMP‘2019-02-01 00:00:00‘)
        		)

      相等于在 2014-02-01 之前的数据,成立一个分区;

      之后的数据每隔一个月成立一个分区。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读