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

news2024/12/24 0:05:15

请添加图片描述

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流

本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

请添加图片描述

分区表 • Oracle版

  • 前言
  • 一、分区表
  • 1.什么是表分区
    • 1.1 分区的意义
    • 1.2 分区的作用
    • 1.3 表分区的方法
  • 2.创建分区表
    • 2.1 创建范围分区表
      • 2.1.1 基本语法
      • 2.1.2 示例
    • 2.2 创建列表分区表
      • 2.2.1 基本语法
      • 2.2.2 示例
  • 小结

前言

✅对于表分区这块内容,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会进行学习
🆗今天这篇内容开始Oracle的表分区,如果大家学习过前面MySQL的表分区的话,那么对于今天的内容是很轻松就可以学会的,当然,这并没有严格的学习顺序的安排,只是对于MySQL的表分区,我们花了大量的篇幅进行学习,大家可以根据自己的学习情况进行随意的选择学习顺序(无需有过多的顾虑)
✳️今天这篇Oracle,主要是对建立表分区进行了学习,比如创建范围分区表、创建列表分区表一系列知识点,其中有代码帮助大家去学习与理解,要 注意Oracle与MySQL的区别,在列表分区表就有所体现,大家可以自己在Navicar或者PL/SQL或者其他工具上进行代码的学习, 最好不要只看懂文章,只有多多练习,才能发现自己的错误并锻炼解决问题的能力。
希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
💻那么,快拿出你的电脑,跟着文章一起学习起来吧

一、分区表

1.什么是表分区

  • 在oracle数据库中,当表中数据量达到GB级别时,为了方便对表中数据的管理,可以考虑将表进行分区。
  • 所谓分区就是将一个巨型表分成若干个独立的组成部分进行存储和管理,每个相对小的、可以独立管理的部分,称为原来表的分区。
  • 表分区后,可以对表的分区进行独立的存取和控制。
  • 每个分区都具有相同的逻辑属性,但物理属性可以不同

如 具有相同列、相同数据类型、相同约束等,但可以具有不同的存储参数、位于不同的表空间中

1.1 分区的意义

  • 学习多表关联的时候 两个表关联的时候,对于关联不上的数据使用null填充,这种关联相当于关联的时候还是要找A的每条数据都要去B里所有数据遍历一遍,效率较慢,常见的有些连接算法可以用,join也并不是A中的一条数据与B中所有数据关联
  • 如果有分区的话,是最明显的优化,分区与分区的数据进行关联,这种关联只能发生在等值关联,所以做SQL的等值判断效率是最高的,使用大于(>)、小于(<)、not in这些的效率都不是很高,而in或等值连接或者多加几个分区(让扫描到更少的分区来提升效率)

1.2 分区的作用

  • 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用
  • 维 护 方 便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可
    • 如运行时网络中断导致数据出问题
  • 均 衡 I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能
  • 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度

对巨型表进行分区具有下列优点:

  • 提高 数据的安全性,一个分区的损坏不影响其他分区中数据的正常使用;
  • 将表的各个分区存储在不同磁盘上,提高数据的并行操作能力
  • 简化数据的管理,可以将某些分区设置为不可用状态,某些分区设置为可用状态,某些分区设置为只读状态,某些分区设置为读/写状态;
  • 操作的透明性,对表进行分区并不影响操作数据的SQL语句。

1.3 表分区的方法

在oracle 11g数据库中,对表进行分区有多种方法。

  • 范围分区(range) :根据分区列值的范围对表进行分区,每条记录根据其分区列值所在的范围决定存储到哪个分区中
    • 范围分区是最常用的分区方法,特别适合根据日期进行分区的情况。
  • 列表分区(list):如果分区列的值不能划分范围(非数值类型或日期类型),同时分区列的取值是一个包含少数值的集合,可以采用列表分区,将特定分区列值的记录保存到特定分区中。
  • 散列分区:又称HASH分区,是采用基于分区列值的HASH算法,将数据均匀分布到指定的分区中
    • 一个记录到底分布到哪个分区是由HASH函数决定的。
  • 复合分区(range—list,range--hash):结合两种基本分区方法,先采用一个分区方法对表或索引进行分区,然后再采用另一个分区方法将分区再分成若干个子分区。每个分区的子分区都是数据的一个逻辑子集。
    • 复合分区包括范围-范围复合分区、范围-散列复合分区、范围-列表复合分区、列表-范围复合分区、列表-散列复合分区、列表-列表复合分区等多种分区方法

在oracle 11g数据库中,分区技术得到进一步的增强,引入了间隔分区、引用分区、基于虚拟列分区以及系统分区(system Partitioning)等多种分区方法

2.创建分区表

2.1 创建范围分区表

2.1.1 基本语法

使用带 partition by range子句的 create table 语句创建范围分区表

CREATE TABLE table(...)
PARTITION BY RANGE (column1[,column2,...])
(PARTITION partition1 VALUES LESS THAN(literal|MAXVALUE)
[TABLESPACE tablespace]
[,PARTITION partition2 VALUES LESS THAN(literal|MAXVALUE)
[TABLESPACE tablespace],...]
)
...

# PARTITION BY RANGE : 指明采用范围分区方法
# column : 分区列,可以是单列分区,也可以是多列分区
# PARTITION partition1 : 设置分区名称
# VALUES LESS THAN : 设置分区列值得上界
# TABLESPACE : 设置分区对应的表空间

## 分区列可以是多列,叫作组合字段分区
## 少用LESS THAN(MAXVALUE)

2.1.2 示例

  • 创建一个分区表,将学生信息根据其出生日期进行分区
    • 将1980年1月1日前出生的学生信息保存在ORCLTBS1表空间中
    • 将1980年1月1日到1990年1月1日出生的学生信息保存在ORCLTBS2表空间中
    • 将其他学生信息保存在ORCLTBS3表空间中
CREATE TABLE student_range(
	sno NUMBER(6) PRIMARY KEY,
	sname VARCHAR2(10),
    sage int,
    birthday DATE
)
PARTITION BY RANGE(birthday)
(
    PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MM-DD')) TABLESPACE ORCLTBS1,
    PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MM-DD')) TABLESPACE ORCLTBS2,
    PARTITION p1 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS3,
);

创建分区表后,通过修改分区表的各个分区所在的表空间的状态,可以实现对表分区的不同操作
可以将表的部分分区设置为脱机状态或只读状态,但不影响其他分区的使用

2.2 创建列表分区表

2.2.1 基本语法

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

  • Oracle的list分区values后没有in
  • MySQL的list分区values后有in
CREATE TABLE table(...)
PARTITION BY LIST (column)
(PARTITION partition1 VALUES(literal|NULL|[DEFAULT])
[TABLESPACE tablespace]
[,PARTITION partition2 VALUES(literal|NULL|[DEFAULT])
[TABLESPACE tablespace],...]
)

2.2.2 示例

  • 创建一个分区表,将学生信息按性别不同进行分区
    • 男学生信息保存在ORCLTBS1表空间中
    • 将女学生信息保存在ORCLTBS2表空间中
CREATE TABLE student_list(
	sno NUMBER(6) PRIMARY KEY,
	sname VARCHAR2(10),
    sage int,
    sex VARCHAR(2) CHECK(sex in ('M','F'))
)
PARTITION BY LIST(sex)
(
    PARTITION student_male VALUES('M') TABLESPACE ORCLTBS1,
    PARTITION student_female VALUES('F') TABLESPACE ORCLTBS2
);

小结

😘感谢大家耐心的看完这篇文章,这篇文章是Oracle的表分区,对于SQL在表分区的知识点,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
🏡也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/784397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《电脑城的衰退:时代变迁中的背影》

随着科技的不断进步和电子商务的兴起&#xff0c;电脑城这个曾经火爆的地方正逐渐走向衰退甚至面临消失。对于这一变迁&#xff0c;我认为既有利也有弊。 首先&#xff0c;电脑城的衰退带来了一定的便利。传统的电脑城通常拥有大量的实体店铺&#xff0c;买家必须亲自前往选择…

Qt/C++音视频开发49-多级连保存和推流设计(同时保存到多个文件/推流到多个平台)

一、前言 近期遇到个用户需要多级联的保存和推流&#xff0c;在ffmpegsave多线程保存类中实现这个功能&#xff0c;越简单越好&#xff0c;就是在推流的同时&#xff0c;能够开启自动转储功能&#xff0c;一边推流的同时一边录像保存到本地视频文件。最初设想的一个方案是new两…

LeetCode515. 在每个树行中找最大值

515. 在每个树行中找最大值 文章目录 [515. 在每个树行中找最大值](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/)一、题目二、题解 一、题目 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值。 示例1&#xff1a; 输入: ro…

Nginx配置解析

server {listen 80;server_name example.com;location / {proxy_pass http://backend;}location / 是 Nginx 的一个匹配规则&#xff0c;用于匹配所有请求路径。proxy_pass 指令则用于将匹配到的请求转发给指定的后端服务器。下面是关于 location / 和 proxy_pass 的详细介绍&a…

YARN的设计思想

YARN的设计思想 ​ YARN的基本思想是将资源管理和作业调度/监视功能划分为单独的守护进程。其思想是拥有一个全局ResourceManager (RM)&#xff0c;以及每个应用程序拥有一个ApplicationMaster (AM)。应用程序可以是单个作业&#xff0c;也可以是一组作业。 一个ResourceManag…

【Linux从入门到精通】进程的控制(进程替换)

本篇文章会对进程替换进行讲解。希望本篇文章会对你有所帮助 文章目录 一、进程替换概念 二、进程替换函数 2、1 execl 2、2 execlp 2、3 execv 2、3 execle 2、4 execve 三、总结 &#x1f64b;‍♂️ 作者&#xff1a;Ggggggtm &#x1f64b;‍♂️ &#x1f440; 专栏&…

SpringBoot项目修改Tomcat版本号

SpringBoot项目修改Tomcat版本号 前言如果项目是以jar包形式打包部署如果项目是以war包形式打包部署示例 仰天大笑出门去&#xff0c;我辈岂是蓬蒿人 前言 Springboot项目,默认是使用内嵌Tomcat servlet容器形式打包部署。关于怎么修改默认的版本号&#xff0c;捣鼓了好久终于…

ChatGPT的工作原理:从输入到输出

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Day 42 算法记录|动态规划 09 (打家劫舍)

打家劫舍 198.打家劫舍213.打家劫舍II337.打家劫舍 III 198.打家劫舍 1.dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2.dp[i] max(dp[i - 2] nums[i], dp[i - 1]); 3.初始化&#xff0c;dp[0] 和 dp[1]&…

2021 年高教社杯全国大学生数学建模竞赛 E 题 中药材的鉴别 第一题

目录 1.数据预处理 1.1 数据基本信息探索 1.2 数据可视化 1.3 异常值处理 2. 数据特征值提取 2.1 数据标准化 2.2 PCA提取特征值 3. 数据聚类鉴别药材种类 3.1 肘部图确定K值 3.2 轮廓系数图确定K值 3.3 数据聚类 3.4 聚类结果可视化 4. 研究不同种类药材…

(10)强化:贪婪模式,捕获组,正则替换,正则分割,反向引用,UBB,断言,委托,Invoke,lambda,Action

一、作业问题 1、问&#xff1a;.net正则表达式默认使用unix的正则表达式模式? 答&#xff1a;在C#和.NET中&#xff0c;默认使用的是基于ECMAScript标准的正则表达式模式&#xff0c;而不是UNIX风 格的正则表达式模式。 …

MATLAB与ROS联合仿真——ROS环境搭建及相关准备工作(下)

本篇文章主要介绍在安装完ROS后&#xff0c;在进行MATLAB与ROS联合仿真之前&#xff0c;需要进行的一些环境搭建以及准备工作&#xff0c;主要分为 创建ROS工作空间及功能包、必备功能包安装、安装Gazebo11、导入实验功能包至工作空间、安装Visual_Studio_Code(选做)、常用便捷…

数据结构————顺序表

1.线性表 &#xff08;1&#xff09;.线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表&#xff0c;链表&#xff0c;栈&#xff0c;队列&#xff0c;字符串... &#xff08;2&#xff09;.线…

如何学习python数据分析?

Python数据分析基础全流程攻略如下&#xff08;适合初学、转岗、无编程基础小白&#xff0c;直接教学&#xff0c;没有额外链接&#xff09; 一、学习 针对数据分析模块&#xff0c;python学习的内容并非全都要学&#xff08;SQL也是如此&#xff09;&#xff0c;即不需要像程…

IT技术岗位应聘的关键技巧与准备方法

面试攻略&#xff1a; # 导入所需的模块 import pandas as pd import numpy as np# 定义一个函数&#xff0c;返回两个数字的和 def add_numbers(num1, num2):return num1 num2# 创建一个DataFrame data {"Name": ["Alice", "Bob", "Char…

新零售数字化商业模式如何建立?新零售数字化营销怎么做?

随着零售行业增速放缓、用户消费结构升级&#xff0c;企业需要需求新的价值增长点进行转型升级&#xff0c;从而为消费者提供更为多元化的消费需求、提升自己的消费体验。在大数据、物联网、5G及区块链等技术兴起的背景下&#xff0c;数字化新零售系统应运而生。 开利网络认为&…

微服务笔记---Nacos集群搭建

微服务笔记---Nacos集群搭建 Nacos集群搭建1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化 Nacos集群搭建 1.集群结构图 官方给出的Nacos集群图&#xff1a; 其中包含3个nacos节点&#xff0c;然后一个负载均衡器代理…

实现Aware接口使用Spring底层组件

实现Aware接口使用Spring底层组件 Aware接口的实现类 基于Component&#xff0c;通过Aware的实现类在容器创建之前将Spring底层的信息获取并使用。 例如&#xff1a; 获取应用上下文对象applicationContext的ApplicationContextAware获取该类的bean对象信息的BeanNameAware…

企业资产管理,这么用事半功倍!

在当今竞争激烈的商业环境中&#xff0c;有效地管理和追踪资产&#xff0c;对于实现高效运营、优化资源利用和降低成本至关重要。 资产管理系统的引入&#xff0c;不仅可以提高资产管理的透明度和准确性&#xff0c;还可以加强对资产生命周期的控制&#xff0c;从而使企业在日常…

Zabbix监控之分布式部署

文章目录 Zabbix监控之分布式部署zabbix proxy概述部署zabbix-proxy节点规划基础环境准备安装proxy以及数据库配置数据库添加服务端host解析修改zabbix-proxy配置文件启动代理服务器 zabbix页面(1)在zabbix页面添加代理(2)zabbix-agent连接proxy Zabbix监控之分布式部署 zabbi…