Oracle分区详解和创建

Oracle在实际业务生产环境中,经常会遇到随着业务量的逐渐增加,表中的数据行数的增多,Oracle对表的管理和性能的影响也随之增大。对表中数据的查询、表的备份的时间将大大提高,以及遇到特定情况下,要对表中数据进行恢复,也随之数据量的增大而花费更多的时间。这个时候,Oracle数据库提供了分区这个机制,通过把一个表中的行进行划分,归为几部分。可以减少大数据量表的管理和性能问题。利用这种分区方式把表数据进行划分的机制称为表分区,各个分区称为分区表。

Oracle分区对于大型表(大数据量)非常有用,分区的作用主要有:

1、改善大型表的查询性能,因为可以通过查询对应分区表中对应的数据,而不需要查询整个表。

2、表更容易管理,因为分区表的数据存储在各个分区中,所以可以按照分区建,来管理对应分区当中的数据,可以按照分区加载和删除其中的数据,比在不分区情况下,更容易管理数据。以及在特定的事故情况下,通过备份好的分区,可以快速恢复对应分区当中的数据,也不需要对全表数据进行恢复。

Oracle创建分区

既然,Oracle分区有如此好处,我们在这里通过一个例子来讲解如何创建分区。在我们的学生信息系统案例当中,学生成绩表(SCORE)会随着学生的增多和课程的增多,表中的数据量会越来越大,所以可以考虑创建分区表来解决这个问题。

Oracle分区也是通过create table命令组成,但是对表进行分区时,得考虑一个字段作为分区建,通常按值的范围来划分分区,所以这里考虑使用成绩的录入时间进行分区。具体代码如下:-- Create table

create table STUDENT.SCORE

(

scoreid  VARCHAR2(18) not null,

stuid    VARCHAR2(11),

courseid VARCHAR2(9),

score    NUMBER,

scdate   DATE

)

partition by range(scdate)(

partition p_score_2018 values less than (TO_DATE('2019-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss'))

TABLESPACE TS_2018,

partition p_score_2019 values less than (TO_DATE('2020-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss'))

TABLESPACE TS_2019,

partition p_score_2020 values less than (MAXVALUE)

TABLESPACE TS_2020

);

-- Add comments to the table

comment on table STUDENT.SCORE

is '学生成绩表';

-- Add comments to the columns

comment on column STUDENT.SCORE.scoreid

is '学生成绩id';

comment on column STUDENT.SCORE.stuid

is '学生学号';

comment on column STUDENT.SCORE.courseid

is '课程id(年度+上下学期+课程序列)';

comment on column STUDENT.SCORE.score

is '成绩';

comment on column STUDENT.SCORE.scdate

is '成绩录入时间';

-- Create/Recreate primary, unique and foreign key constraints

alter table STUDENT.SCORE

add constraint PK_SCORE primary key (SCOREID)

using index

tablespace USERS

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

这里使用命令partition by range对成绩的录入日期(scdate)进行分区,如录入日期小于2019年的会被放入分区p_score_2018当中,2019年数据会被放入p_score_2019这个分区当中,大于2019年数据都会被放入到p_score_2020这个分区当中。

这里不必为最后一个分区指定最大值,maxvalue关键字会告诉Oracle使用这个分区来存储前面几个分区当中不能存储的数据。

上面实例展示的是Oracle按照值的范围进行分区,Oracle还支出散列分区,通过某一个字段,把表中的数据散列在各个分区中。可以通过关键字partition by hash,可以把分区散列到不同的表空间当中。

Oracle还支持列表分区(partition by list),它是通过按照指定分区建的值归并到各个分区,其实这里学生成绩表也可以考虑按照课程进行列表分区。

总结:Oracle分区对大型表(数据量大)有重大的性能提升,所以在表结构设计时,需要提前按照相关业务需求进行相应的改进。

oracle添加分区语句_Oracle分区详解和创建相关推荐

  1. oracle查看视图定义语句_oracle视图详解

    Oracle 视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执行 ...

  2. oracle的sql if函数的使用方法,oracle基本sql语句和函数详解

    一.  数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构的数据定义语言命令有: cre ...

  3. oracle数据库sga用途_Oracle SGA详解

    SGA(System Global Area)系统全局区.这是一个非常庞大的内存区间,也是为什么开启oracle之后占用了很大内存的原因. SGA分为不同的池,我们可以通过视图v$sgastat查看, ...

  4. mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解

    本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...

  5. linux parted分区教程,分区工具parted的详解及常用分区使用方法

    分区工具parted的详解及常用分区使用方法 一. parted的用途及说明 概括使用说明: parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区 ...

  6. oracle 数据库循环查询语句怎么写,sql循环查询(sql语句循环查询详解)

    sql循环查询(sql语句循环查询详解) 2020-07-24 11:15:51 共10个回答 select*fromawheret_idin('3','4');select*fromawheret_ ...

  7. linux sfdisk命令,Linux运维知识之Linux sfdisk硬盘分区工具程序命令详解

    本文主要向大家介绍了Linux运维知识之Linux sfdisk硬盘分区工具程序命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 功能说明:硬盘分区工具程序. 语 法:s ...

  8. Oracle中游标Cursor基本用法详解

    这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...

  9. Oracle中序列(Sequence)详解

    Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...

最新文章

  1. gitee查看当前账号_upic+gitee图床,自由书写Markdown
  2. 3月14号,oracle的说道多多
  3. python装饰器的案例_Python之装饰器的实例
  4. 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )
  5. linux忘记mysql的密码忘记了_linux忘记mysql密码找回方法
  6. 【数据结构与算法】之深入解析“最小覆盖子串”的求解思路与算法示例
  7. 【Redis】18.缓存预热、缓存雪崩、缓存击穿、缓存穿透、性能指标监控等企业级解决方案
  8. ssm使用全注解实现增删改查案例——Emp
  9. 单片机全局有必要封装_C语言开发单片机为什么大多数都采用全局变量的形式?...
  10. 数列分段(洛谷P1181题题解,Java语言描述)
  11. 计算机专业本科毕业答辩问题及回答
  12. python骗局-代购被骗?Python带你征服骗子!直接干掉他的网站!亲身经历!
  13. ipv6地址_「案例」路由器怎么自动获取IPv6地址?
  14. C#条件编译,发布多平台和多种选择性的项目
  15. 大白话告诉你什么是java
  16. 软件架构入门,看这篇就够了···
  17. iOS开发日记40-详解React Native
  18. 为什么要学编写通达信指标公式
  19. ubuntu中耳机声音小的解决方案
  20. fpga控制vga显示彩色图片

热门文章

  1. SmileyRating
  2. Mac-工具-Homebrew快速安装/卸载/使用
  3. Redis6通信协议升级至RESP3,一口气看完13种新数据类型
  4. asp.net图书馆借阅归还系统
  5. http(请求方法,状态码,Cookie与Session)
  6. 打印html页面,并在每个页面添加页眉和页脚
  7. 淘宝API接口item_get - 获得淘宝商品详情
  8. 20张图为您讲述磁盘发展史
  9. 纸鸢|这么多工业软件到底是怎么分类的?
  10. Cadence 原理图栅格设置步骤