【SQL应知应会】表分区(二)• Oracle版

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【SQL应知应会】表分区(二)• Oracle版

前言

✅对于表分区这块内容,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会进行学习

🆗前面也有过Oracle的表分区的开篇了,今天这篇内容,继续Oracle的表分区,如果大家学习过前面MySQL的表分区的话,那么对于今天的内容是很轻松就可以学会的,当然,这并没有严格的学习顺序的安排,只是对于MySQL的表分区,我们花了大量的篇幅进行学习,大家可以根据自己的学习情况进行随意的选择学习顺序(无需有过多的顾虑)

✳️今天这篇主要讲了如何创建散列分区表,其中有两种方法分别在两个例子中进行了使用,然后就是讲了创建复合分区表,包括范围-列表复合分区与范围-散列复合分区

希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持

💻那么,快拿出你的电脑,跟着文章一起学习起来吧


一、分区表

1.什么是表分区

👉:传送门💖什么是表分区💖


1.1 分区的意义

1.2 分区的作用

1.3 表分区的方法


2.创建分区表

2.1 创建范围分区表

👉:传送门💖创建范围分区表💖


2.1.1 基本语法

2.1.2 示例


2.2 创建列表分区表

👉:传送门💖创建列表分区表💖


2.2.1 基本语法

2.2.2 示例


2.3 创建散列分区表

使用范围分区和列表分区方法都可能导致数据分布不均匀,此时可以采用散列分区方法,将数据均匀分布到指定的分区中。


2.3.1 基本语法

使用带PARTITION BY HASH子句的CREATE TABLE语句创建散列分区表,基本语法为:


CREATE TABLE table(...)
PARTITION BY HASH (column1[,column2,...])
[(PARTITION partition [TABLESPACE tablespace][,...])]|[PARTITION hash_partition_quantity STORE IN (tablespace1[,...])]
...


通过PARTITION BY HASH 指定分区方法,其后的括号指定分区列

使用PARTITION子句指定每个分区名称和其存储空间

或者使用PARTITION子句指定分区数量,用STORE IN子句指定分区存储空间

2.3.2 示例1

通过PARTITION BY HASH 指定分区方法,其后的括号指定分区列

使用PARTITION子句指定每个分区名称和其存储空间

示例: 创建一个分区表,根据学号将学生信息均匀分布到ORCLTBS1和ORCLTBS2两个表空间中


CREATE TABLE student_hash(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10)
)
PARTITION BY HASH(sno)
(
    PARTITOIN p1 TABLESPACE ORCLTBS1,
    PARTITOIN p1 TABLESPACE ORCLTBS2
);


2.3.2 示例2

使用PARTITION子句指定分区数量,用STORE IN子句指定分区存储空间

示例: 创建一个分区表,根据学号将学生信息均匀分布到ORCLTBS1和ORCLTBS2两个表空间中


# 用STORE IN子句指定分区存储空间创建分区表
CREATE TABLE student_hash(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10)
)
PARTITION BY HASH(sno)
PARTITION 2 STORE IN (ORCLTBS1,ORCLTBS2);


2.4 创建复合分区表

创建复合分区表时,首先在CREATE TABLE语句中使用PARTITION BY子句指定分区方法、分区列,然后使用SUBPARTITION BY子句指定子分区方法、子分区列、子分区数量及子分区的描。


2.4.1 示例1 范围-列表复合分区

创建一个范围-列表复合分区表,将1980年1月1日前出生的男、女学生信息分别保存在ORCLTBS1和ORCLTBS2两个表空间中,1980年1月1日到1990年1月1日出生的男、女学生信息分别保存在ORCLTBS3和ORCLTBS4两个表空间中,其他学生信息保存在ORCLTBS5表空间中

CREATE TABLE student_range_list(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10),
    sex VARCHAR(2) CHECK(sex in ('M','F')),
    sage NUMBER(4),
    birthday DATE
)
PARTITION BY RANGE(birthday)
SUBPARTITION BY LIST(sex)
(
    PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p1_sub1 VALUES('M') TABLESPACE ORCLTBS1,
        SUBPARTITION p1_sub2 VALUES('F') TABLESPACE ORCLTBS2        
    ),
    PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p2_sub1 VALUES('M') TABLESPACE ORCLTBS3,
        SUBPARTITION p2_sub2 VALUES('F') TABLESPACE ORCLTBS4        
    ),
    PARTITION p3 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS5
)



2.4.2 示例2 范围-散列复合分区

创建一个范围-散列复合分区表,将1980年1月1日前出生学生信息分别保存在ORCLTBS1和ORCLTBS2两个表空间中,1980年1月1日到1990年1月1日出生的学生信息分别保存在ORCLTBS3和ORCLTBS4两个表空间中,其他学生信息保存在ORCLTBS5表空间中

CREATE TABLE student_range_list(
  sno NUMBER(6) PRIMARY KEY,
  sname VARCHAR2(10),
    sage NUMBER(4),
    birthday DATE
)
PARTITION BY RANGE(birthday)
SUBPARTITION BY HASH(sage)
(
    PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p1_sub1 TABLESPACE ORCLTBS1,
        SUBPARTITION p1_sub2 TABLESPACE ORCLTBS2        
    ),
    PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MM-DD'))
    (
        SUBPARTITION p2_sub1 TABLESPACE ORCLTBS3,
        SUBPARTITION p2_sub2 TABLESPACE ORCLTBS4        
    ),
    PARTITION p3 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS5
)


小结

😘感谢大家耐心的看完这篇文章,这篇文章是Oracle的表分区的第2篇文章,对于SQL在表分区的知识点,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧

🏡也可以加入我的社区一起学习呀

✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
|
3月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
108 3
|
3月前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
105 1
|
6月前
|
SQL 存储 Oracle
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
**TDengine 3.3.2.0 发布摘要** - 开源与企业版均强化性能,提升WebSocket、stmt模式写入与查询效率,解决死锁,增强列显示。 - taos-explorer支持geometry和varbinary类型。 - 企业版引入UDT,允许自定义数据转换。 - 新增Oracle和SQL Server数据接入。 - 数据同步优化,支持压缩,提升元数据同步速度,错误信息细化,支持表名修改。 - 扩展跨平台支持,包括麒麟、Euler、Anolis OS等。
148 0
|
3月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
249 64
|
1月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
116 11
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
2月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
1月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
61 7

推荐镜像

更多