栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

oracle 表分区含义和使用场合,表分区的方式

oracle 表分区含义和使用场合,表分区的方式

文章目录

一.表分区含义和使用场景

1.1 作用和含义1.2 传统表分区的类型

1.2 .1 范围分区1.2 .2 散列分区1.2 .3 列表分区1.2 .4 复合分区 1.3 11g新增分区

1.3 .1 引用分区

一.表分区含义和使用场景 1.1 作用和含义

允许用户将表分成多个分区;

用户可以执行查询,只访问表中特定的分区;

将不同的分区存储在不同的磁盘上,提高访问性能和安全性;

可以独立的备份和恢复每个分区;

1.2 传统表分区的类型 1.2 .1 范围分区

以表的一列或者一组列的值的范围分区

语法:

partition by range (列名)(
partition 分区1 values less than (范围1),
partition 分区2 values less than (范围2),
...
[partition 分区n values less than (maxvalue)]
);

如:

create table sales(
p_id varchar2(10),
s_count number
) partition by range (s_count )(
partition p1 values less than (1000),
partition p2 values less than (2000),
partition pn values less than (3000)
);

查看表的分区信息:

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


往分区表插入数据:

查询特定分区数据:

select * from sales partition(p1);


增加分区

alter table sales add partition p4 values less than (maxvalue);


1.2 .2 散列分区

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

如:

create table my_emp(empno number, ename varchar2(10))
partition by hash(empno)(partition p1,partition p2);

1.2 .3 列表分区

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

create table personCity(id number,city varchar2(10))
partition by list (city)(
partition p1 values('开封','商丘'),
partition p2 values('洛阳'),
partition p3 values('许昌'),
partition p4 values('高安')
);
1.2 .4 复合分区

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

partition by range (列名)
subpartition by hash(列名)
subpartitions 子分区数量
(
partition 分区1 values less than (范围1),
partition 分区2 values less than (范围2),
...
[partition 分区n values less than (maxvalue)]
);

子分区数量:对于每个分区会有n个子分区

create table student(sno number, sname varchar2(10))
partition by range (sno)
subpartition by hash(sname)
subpartitions 4
(
partition p1 values less than (1000),
partition p2 values less than (2000),
partition p3 values less than (maxvalue)
);


通过em查看表信息

1.3 11g新增分区 1.3 .1 引用分区

基于由外键引用的父表的分区的方法,它依赖于已有的父表子表关系,子表通过外键关联到父表,进而继承父表的分区方式而不需要自己创建,子表还继承父表的维护操作。

CREATE TABLE orders
    ( order_id NUMBER(12),
      order_date TIMESTAMP,
      order_mode VARCHAR2(8),
      customer_id NUMBER(6),
      order_status NUMBER(2),
      order_total NUMBER(8,2),
      sales_rep_id NUMBER(6),
      promotion_id NUMBER(6),
      CONSTRAINT orders_pk PRIMARY KEY(order_id)
    )
  PARTITION BY RANGE(order_date)
    ( PARTITION Q1 VALUES LESS THAN (TO_DATE('01-04-2022','DD-MM-YYYY')),
      PARTITION Q2 VALUES LESS THAN (TO_DATE('01-07-2022','DD-MM-YYYY')),
      PARTITION Q3 VALUES LESS THAN (TO_DATE('01-10-2022','DD-MM-YYYY')),
      PARTITION Q4 VALUES LESS THAN (TO_DATE('01-01-2023','DD-MM-YYYY'))
    );

CREATE TABLE order_items
    ( order_id NUMBER(12) NOT NULL,
      line_item_id NUMBER(3) NOT NULL,
      product_id NUMBER(6) NOT NULL,
      unit_price NUMBER(8,2),
      quantity NUMBER(8),
      CONSTRAINT order_items_fk
      FOREIGN KEY(order_id) REFERENCES orders(order_id)
    )
    PARTITION BY REFERENCE(order_items_fk);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号