oracle表分区--范围分区

文章目录

  • oracle表分区
    • 分区的原因
    • 分区的优势
    • oracle表分区的作用
    • oracle表分区类型
      • 一、范围分区
      • 二、 创建分区表和使用:
        • 1、按照数值范围划分
        • 2、按照时间范围
        • 3、MAXVALUE
        • 2. 向现有表添加新的分区
        • 3、 分区维护和重新组织(合并/删除)


oracle表分区

oracle 11g 支持自动分区,不过得在创建表时就设置好分区。

分区的原因

单表的数据量如果太大,会影响到读写性能。我们可以使用分库分表来解决单表的性能问题。Oracle的分区表是将一张大表在物理上分成几张较小的表,从逻辑上来看仍然是一张完整的表。这样每次DML操作可以只考虑其中一张分区表。oracle建议单表大小超过2GB时就使用分区表。
分区功能能够将表、索引或索引组织表进一步细分为段,从而能够更精确地管理和访问这些数据库对象。这些数据库对象的段叫做分区。
分区表应用在大表更合适,至少要大于100万条的记录才可以考虑使用分区表。
现实中的场景:图书馆的图书分区

分区的优势

(IO速度、删除、查询、维护、安全)

由于Oracle数据库可以将分区指定为不同的表空间,而不同的表空间是可以指向不同的磁盘设备的,在很多时候,磁盘设备的I/O速度是系统进行数据操作的瓶颈,而分区并行,则起到了优化物理硬件资源,从而缩短了执行的时间的作用。

分区,就类似于我们将图书分类放到了不同的区间中,这个时候,我们就可以只针对其中的某一类图书进行操作,比如进行该类书籍的查询、上架、下架、甚至将该类图书付之一炬,这带来了两个特别大的优势,第一,我们无视其他分区的数据;第二,我们可以很方便的对本区的数据进行删除操作。

提高了特定的查询速度,比如我们现在只需要查找IT类图书的数量,因为我们能够在第一意识中,排除其他非IT类书籍,必然会提高查询的性能。

节约维护的成本,传统的维护操作,例如重建索引等,因为有锁机制的存在,是会影响到其他人的读取和更新删除操作的,但是由于有了分区,我们在维护IT类书籍的时候,就不会对其他分类的数据造成影响,这个时候,可以降低因为维护数据而对其他系统数据产生的各种影响。

从安全的角度上而言,我们将不同的分区放在不同的表空间当中,就类似于我们没有将所有的鸡蛋放到一个篮子里面,必然会带来安全方面的提升。

oracle表分区的作用

oracle表分区类型

在这里插入图片描述

一、范围分区

范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。当使用范围分区时,请考虑以下几个规则:
1)每一个分区都必须有一个VALUES LESS THEN子句,它指定了一个不包括在该分区中的上限值。分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中。
2)所有分区,除了第一个,都会有一个隐式的下限值,这个值就是此分区的前一个分区的上限值。
3)在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不确定的值。这个值高于其它分区中的任何分区键的值,也可以理解为高于任何分区中指定的VALUE LESS THEN的值,同时包括空值。

在这里插入图片描述

二、 创建分区表和使用:

1、按照数值范围划分
--1.创建表CREATE TABLE sales (sale_id NUMBER,amount NUMBER
)
-- 2.创建范围分区
PARTITION BY RANGE (sale_id) (
--范围分区根据分区的范围添加相应的数据到指定的范围分区之中PARTITION p1 VALUES LESS THAN (100),--范围<100PARTITION p2 VALUES LESS THAN (200),--范围100-200PARTITION p3 VALUES LESS THAN (300),-- 200-300PARTITION p4 VALUES LESS THAN (400)--300-400
);--VALUES LESS THAN限制的分区的范围上限和下限-- 3.根据范围分区进行数据添加
insert into sales values(100,200)
insert into sales values(200,200);
insert into sales values(300,301);
insert into sales values(50,401);-- 查看分区表:可以根据查看分区查询各范围分区相应的数据
select * from sales partition(p1);--partition 分区
select * from sales partition(p2);
select * from sales partition(p3);
--查看表
select * from sales 
2、按照时间范围
CREATE TABLE orders1 (order_id NUMBER,order_date DATE,amount NUMBER
)
PARTITION BY RANGE (order_date) (PARTITION p1 VALUES LESS THAN (TO_DATE('2022-01-01', 'YYYY-MM-DD')),PARTITION p2 VALUES LESS THAN (TO_DATE('2023-01-01', 'YYYY-MM-DD')),PARTITION p3 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')));INSERT INTO orders1 (order_id, order_date, amount) VALUES (1, TO_DATE('2021-12-31', 'YYYY-MM-DD'), 100);
INSERT INTO orders1 (order_id, order_date, amount) VALUES (2, TO_DATE('2022-06-01', 'YYYY-MM-DD'), 200);select *  from  orders1-- 查看表数据select *  from  orders1 partition(p2)--查看表分区数据(指定分区)
3、MAXVALUE

CREATE TABLE RANGETABLE  
(   idd   INT PRIMARY KEY ,   iNAME VARCHAR(10),   grade INT    
)   
PARTITION  BY  RANGE (grade)   
(   PARTITION  p1 VALUES  LESS  THEN (1000) TABLESPACE  Part1_tb,   PARTITION  p2 VALUES  LESS  THEN (MAXVALUE) TABLESPACE  Part2_tb  --超过p1范围区的数据,都可以向新增到p2中
);  --——在表上执行查询  
select * from RANGETABLE;  --——在表分区上执行查询  
select * from RANGETABLE partition(p1);  
2. 向现有表添加新的分区

如果你已经有一个分区表,并且希望添加新的分区,可以使用ALTER TABLE … ADD PARTITION语句。例如,如果我们想在上面的RANGETABLE 表中添加一个新分区p3:

ALTER TABLE RANGETABLE  PARTITION  p3 VALUES  LESS  THEN (2000) 
3、 分区维护和重新组织(合并/删除)

随着时间的推移,你可能需要重新组织或合并分区以优化性能或管理空间。例如,合并两个分区:

ALTER TABLE employees_partitioned
MERGE PARTITIONS p1, p2 INTO PARTITION p_new;

或者,你可以删除不再需要的分区:

ALTER TABLE employees_partitioned
DROP PARTITION p_old;

在执行分区操作之前,确保有足够的备份和测试,因为错误的分区操作可能会导致数据丢失或查询性能下降。

分区类型(范围、列表、哈希等)和策略应该根据你的具体需求和数据特性来选择。例如,如果你知道某些列的唯一值非常多,那么使用列表分区可能更合适。

使用Oracle的自动分区功能(例如,自动范围分区)可以自动管理分区的创建,这可以减少手动干预的需要。

通过合理使用分区,你可以有效地管理和查询大型数据集,同时提高数据库的性能和可管理性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

InspurServer服务器监控指标详解

在现代信息化环境中&#xff0c;服务器的稳定运行对于业务连续性至关重要。InspurServer作为高性能服务器解决方案&#xff0c;其性能监控与优化更是不可或缺。本文将基于监控易一体化运维软件&#xff0c;深入探讨InspurServer服务器的关键监控指标&#xff0c;包括响应时间、…

基于opencv的 24色卡IQA评测算法源码-可完全替代Imatest

1.概要 利用24色卡可以很快的分析到曝光误差&#xff0c;白平衡误差&#xff0c;噪声&#xff0c;色差&#xff0c;饱和度&#xff0c;gamma值。IQA或tuning工程一般用Imatest来手动计算&#xff0c;不便于产测部署&#xff0c;现利用opencv实现了imatest的全部功能&#xff0c…

Django开发入门 – 4.创建Django app

Django开发入门 – 4.创建Django app Create A Django App Under An Existing Project By JacksonML 1. 什么是Django app? Django项目面向Web应用程序&#xff0c;它会由一个或多个子模块组成&#xff0c;这些子模块称为apps。 Django apps负责执行完整Web应用程序中涉及…

string

string 概念 string 字符串其实是一种更加高级的封装,string字符串中包含大量的方法, 这些方法使得字符串的操作变得更加简单。 C中将字符串直接作为一种类型,也就是string类型,使用string类型创建的 对象就是C的字符串。 使用C中提供的string是,必须添加头文件string。 st…

如何在Excel和WPS中进行翻译

文档翻译我们可以用在线翻译工具&#xff0c;Excel工作表的翻译使用在线翻译工具就不是特别方便&#xff0c;那么如何快速进行翻译呢&#xff0c;我们今天介绍在不同的场景下如何利用翻译函数和Python程序来实现单元格的快速翻译。 一、在wps中进行翻译 WPS是我们常用的办公软…

Docker Desktop Windows 之 安装 SqlServer

Docker 安装SqlServer 》》拉取 Pull docker pull mcr.microsoft.com/mssql/server:2022-latest 》》运行 run docker run -e “ACCEPT_EULAY” -e “MSSQL_SA_PASSWORDSA12345” -p 1400:1433 --name sql-server2022 -h sql-server2022 -d mcr.microsoft.com/mssql/server:20…

【STM32】ADC|多通道ADC采集

本次实现的是ADC实现数字信号与模拟信号的转化&#xff0c;数字信号时不连续的&#xff0c;模拟信号是连续的。 1.ADC转化的原理 模拟-数字转换技术使用的是逐次逼近法&#xff0c;使用二分比较的方法来确定电压值 当单片机对应的参考电压为3.3v时&#xff0c;0~ 3.3v(模拟信…

pdf.js默认显示侧边栏和默认手形工具

文章目录 默认显示侧边栏(切换侧栏)默认手形工具(手型工具) 大部分的都是在viewer.mjs中的const defaultOptions 变量设置默认值,可以使用数字也可以使用他们对应的变量枚举值 默认显示侧边栏(切换侧栏) 在viewer.mjs中找到defaultOptions,大概在732行,或则搜索sidebarViewOn…

使用DeepSeek和Kimi快速自动生成PPT

目录 步骤1&#xff1a;在DeepSeek中生成要制作的PPT主要大纲内容。 &#xff08;1&#xff09;在DeepSeek网页端生成 &#xff08;2&#xff09;在本地部署DeepSeek后&#xff0c;使用chatBox生成PPT内容 步骤2&#xff1a;将DeepSeek成的PPT内容复制到Kimi中 步骤3&…

PADS多层板减少层数

前提 PADS是硬件工程师必备的画图软件&#xff0c;相信很多朋友遇到过为降低成本把6层板改为4层&#xff0c;或8层改为6层的经历&#xff0c;正常是把不需要的两层上所有东西删掉&#xff0c;然后修改层设置&#xff0c;下面举例说明。 首先是将要删除的层上的数据全部删除&a…

Spring 项目接入 DeepSeek,分享两种超简单的方式!

⭐自荐一个非常不错的开源 Java 面试指南&#xff1a;JavaGuide &#xff08;Github 收获148k Star&#xff09;。这是我在大三开始准备秋招面试的时候创建的&#xff0c;目前已经持续维护 6 年多了&#xff0c;累计提交了 5600 commit &#xff0c;共有 550 多位贡献者共同参与…

【LeetCode】689、三个无重叠子数组的最大和

【LeetCode】689、三个无重叠子数组的最大和 文章目录 一、dp1.1 dp 二、多语言解法 一、dp 1.1 dp // go // 输入: nums[] // 计算: 找三段长度为 k 的不重叠的子数组. 要求这 3k 个元素之和最大 // 输出: 三段子数组的 起始位置. 若有多个结果, 返回字典序最小的一个 func …

transformer

导语&#xff1a; 2017年&#xff0c;一篇名为《Attention is All You Need》的论文横空出世&#xff0c;提出了Transformer模型&#xff0c;彻底改变了自然语言处理&#xff08;NLP&#xff09;领域的格局。Transformer以其独特的结构和强大的性能&#xff0c;迅速成为NLP领域…

DeepScaleR:仅用 1.5B 参数超越 OpenAI O1-Preview 的强化学习模型

1. 项目概述 1.1 项目目标与意义 DeepScaleR 项目旨在通过强化学习技术推动人工智能模型的性能提升,以更低的成本实现更优的推理能力。其核心目标是开发出在特定任务上超越现有模型的高效模型,同时为开源社区提供技术参考,促进技术的普惠和创新。 技术突破:DeepScaleR-1.…

深入理解指针初阶:从概念到实践

一、引言 在 C 语言的学习旅程中&#xff0c;指针无疑是一座必须翻越的高峰。它强大而灵活&#xff0c;掌握指针&#xff0c;能让我们更高效地操作内存&#xff0c;编写出更优化的代码。但指针也常常让初学者望而生畏&#xff0c;觉得它复杂难懂。别担心&#xff0c;本文将用通…

八、OSG学习笔记-

前一章节&#xff1a; 七、OSG学习笔记-碰撞检测-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145558132?spm1001.2014.3001.5501 一、了解OSG图元加载显示流程 本章节代码&#xff1a; OsgStudy/wids CuiQingCheng/OsgStudy - 码云 - 开源中国https:…

在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南

在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南 文章目录 在 ARM64 架构系统离线安装 Oracle Java 8 全流程指南一、引言二、下载前的准备2.1 确认系统架构2.2 注册 Oracle 账号 三、从 Oracle 官方下载 Java 8 for ARM643.1 访问 Oracle Java 存档页面3.2 选择合适的版本…

栈的简单介绍

一.栈 栈是一种先进后出的结构&#xff1a;&#xff08;先出来的是45&#xff0c;要出12就必须先把前面的数据全部出完。&#xff09; 2.实例化一个栈对象&#xff1a; 3.入栈&#xff1a; 4.出栈&#xff1a;&#xff08;当走完pop就直接弹出45了。&#xff09; 5.出栈的…

java韩顺平最新教程,Java工程师进阶

简介 HikariCP 是用于创建和管理连接&#xff0c;利用“池”的方式复用连接减少资源开销&#xff0c;和其他数据源一样&#xff0c;也具有连接数控制、连接可靠性测试、连接泄露控制、缓存语句等功能&#xff0c;另外&#xff0c;和 druid 一样&#xff0c;HikariCP 也支持监控…

HCIA项目实践--RIP相关原理知识面试问题总结回答

9.4 RIP 9.4.1 补充概念 什么是邻居&#xff1f; 邻居指的是在网络拓扑结构中与某一节点&#xff08;如路由器&#xff09;直接相连的其他节点。它们之间可以直接进行通信和数据交互&#xff0c;能互相交换路由信息等&#xff0c;以实现网络中的数据转发和路径选择等功能。&am…