oracle添加分区语句_Oracle分区详解和创建
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分区详解和创建相关推荐
- oracle查看视图定义语句_oracle视图详解
Oracle 视图详解 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执行 ...
- oracle的sql if函数的使用方法,oracle基本sql语句和函数详解
一. 数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构的数据定义语言命令有: cre ...
- oracle数据库sga用途_Oracle SGA详解
SGA(System Global Area)系统全局区.这是一个非常庞大的内存区间,也是为什么开启oracle之后占用了很大内存的原因. SGA分为不同的池,我们可以通过视图v$sgastat查看, ...
- mysql数据库表分区_MySQL数据库之MySQL的分区和分表详解
本文主要向大家介绍了MySQL数据库之MySQL的分区和分表详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1. 分区 MySQL中的分区是指将一个数据表按照某种规则(如时 ...
- linux parted分区教程,分区工具parted的详解及常用分区使用方法
分区工具parted的详解及常用分区使用方法 一. parted的用途及说明 概括使用说明: parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区 ...
- oracle 数据库循环查询语句怎么写,sql循环查询(sql语句循环查询详解)
sql循环查询(sql语句循环查询详解) 2020-07-24 11:15:51 共10个回答 select*fromawheret_idin('3','4');select*fromawheret_ ...
- linux sfdisk命令,Linux运维知识之Linux sfdisk硬盘分区工具程序命令详解
本文主要向大家介绍了Linux运维知识之Linux sfdisk硬盘分区工具程序命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 功能说明:硬盘分区工具程序. 语 法:s ...
- Oracle中游标Cursor基本用法详解
这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...
- Oracle中序列(Sequence)详解
Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...
最新文章
- gitee查看当前账号_upic+gitee图床,自由书写Markdown
- 3月14号,oracle的说道多多
- python装饰器的案例_Python之装饰器的实例
- 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )
- linux忘记mysql的密码忘记了_linux忘记mysql密码找回方法
- 【数据结构与算法】之深入解析“最小覆盖子串”的求解思路与算法示例
- 【Redis】18.缓存预热、缓存雪崩、缓存击穿、缓存穿透、性能指标监控等企业级解决方案
- ssm使用全注解实现增删改查案例——Emp
- 单片机全局有必要封装_C语言开发单片机为什么大多数都采用全局变量的形式?...
- 数列分段(洛谷P1181题题解,Java语言描述)
- 计算机专业本科毕业答辩问题及回答
- python骗局-代购被骗?Python带你征服骗子!直接干掉他的网站!亲身经历!
- ipv6地址_「案例」路由器怎么自动获取IPv6地址?
- C#条件编译,发布多平台和多种选择性的项目
- 大白话告诉你什么是java
- 软件架构入门,看这篇就够了···
- iOS开发日记40-详解React Native
- 为什么要学编写通达信指标公式
- ubuntu中耳机声音小的解决方案
- fpga控制vga显示彩色图片