前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库表分区的作用_oracle数据库分区

数据库表分区的作用_oracle数据库分区

作者头像
全栈程序员站长
发布2022-08-18 17:58:26
9820
发布2022-08-18 17:58:26
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

分区表

分区表用途

分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。

分区表的优点:

(1)由于将数据分散到各个分区中,减少了数据损坏的可能性;

(2)可以对单独的分区进行备份和恢复;

(3)可以将分区映射到不同的物理磁盘上,来分散IO;

(4)提高可管理性、可用性和性能。

数据量大的表,一般大于2GB;数据有明显的界限划分;对于Long和Long Raw类型列不能使用分区

分区表类型

一般包括范围分区,散列分区,列表分区、复合分区(范围-散列分区,范围-列表分区)、间隔分区和系统分区等。

​​​​​​​范围分区

范围分区根据数据库表中某一字段的值的范围来划分分区。

【语法】 在Create Table语句后增加 PARTITION BY RANGE(column_name) ( PARTITION part1 VALUES LESS THAN (range1) [TABLESPACE tbs1], PARTITION part2 VALUES LESS THAN (range2) [TABLESPACE tbs2], …. PARTITION partN VALUES LESS THAN (MAXVALUE) [TABLESPACE tbsN] ); 【说明】 MAXVALUE:当分区列值都不在设置的范围内时,新增数据将到这个分区中 【示例】 — 创建表,并设置分区 create table myemp ( empno number(4) primary key, ename varchar2(10), hiredate date, sal number(7,2), deptno number(2) ) partition by range(sal) ( partition p1 values less than(1000), partition p2 values less than(2000), partition p3 values less than(maxvalue) ); — 插入数据 insert into myemp(empno,ename,hiredate,sal,deptno) select empno,ename,hiredate,sal,deptno from emp; — 查看工资1000-2000的数据 select * from myemp partition(p2); — 删除工资小于1000的数据 delete from myemp partition(p1); — 查看数据 select * from myemp;

​​​​​​​列表分区

列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。

【语法】 在Create Table语句后增加 PARTITION BY LIST(column_name) ( PARTITION part1 VALUES (values_list1), PARTITION part2 VALUES (values_list2), …. PARTITION partN VALUES (DEFAULT) ); 其中:column_name是以其为基础创建列表分区的列。 part1…partN是分区的名称。 values_list是对应分区的分区键值的列表。 DEFAULT关键字允许存储前面的分区不能存储的记录。 【示例】 — 创建表,并设置分区 create table myemp2 ( empno number(4) primary key, ename varchar2(10), hiredate date, sal number(7,2), deptno number(2) ) partition by list(deptno) ( partition dept10 values(10), partition dept20 values(20), partition dept30 values(30), partition deptx values(default) ); — 插入数据 insert into myemp2(empno,ename,hiredate,sal,deptno) select empno,ename,hiredate,sal,deptno from emp; — 查看部门20的数据 select * from myemp2 partition(dept20); — 删除部门30的数据 delete from myemp2 partition(dept30); — 查看数据 select * from myemp2;

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135045.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分区表
    • 分区表用途
      • 分区表类型
        • ​​​​​​​范围分区
          • ​​​​​​​列表分区
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档