Oracle-表分区(范围分区、列分区、Hash分区、嵌套分区、自动扩展分区)

-- 表分区的优缺点

   表分区的优点: 提高了增、删、改、查的性能

                  如果某个分区的数据出现问题,只需要修复这个分区的数据就可以了,不影响其他分区的数据查询

       缺点: 已经存在的表没有方法可以直接转化为分区表

-- 查询的数据可能会跨分区

-- 分区索引 

  本地分区索引:适合当个分区查询

  全局索引:适合跨分区查询

-- 哈希分区有什么优点

   尽量让每个分区得数据分布均匀

-- 自动扩展分区有什么优缺点

   优点:维护方便

   缺点:分区名是系统自动给的

-- 范围分区 range

create table emp_range

(

   empno       number(4)

  ,ename       varchar2(10)

  ,job         varchar2(9)

  ,mgr         number(4)

  ,create_date date

)

   partition by range (create_date)

   (

      partition p_20170101 values less than  (to_date(‘ ’,yyyymm))

     ,partition p_20170102 values less than (to_date(‘ ’,yyyymm))

     ,partition p_20170103 values less than  (to_date(‘ ’,yyyymm)));

   -- 显示当前用户可访问的所有分区表信息:ALL_PART_TABLES

select * from ALL_PART_TABLES a where a.table_name = @;;

-- 显示当前用户所有分区表的信息:USER_PART_TABLES

select * from USER_PART_TABLES a;

--显示当前用户可访问的所有分区表的详细分区信息:ALL_TAB_PARTITIONS 

select * from ALL_TAB_PARTITIONS a where a.table_name =@;;

--显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS 

select * from USER_TAB_PARTITIONS a where a.table_name = @

-- 自己往表里面插入数据  然后查询  删除数据

SELECT * FROM EMP_RANGE PARTITION (P_20170101); -- 查询

ALTER TABLE EMP_RANGE TRUNCATE PARTITION  P_20170101; -- 删除分区的数据

-- 往表里面插入数据

SELECT * FROM EMP_RANGE;

SELECT * FROM EMP_RANGE PARTITION (P_20170103); -- 指定一个范围表分区查询数据

INSERT INTO EMP_RANGE VALUES(1001,'xiaoming','salas',1000,to_date());

commit;

-- 异常:插入的分区关键字未映射到任何分区

-- 添加一个分区 

ALTER TABLE EMP_RANGE ADD PARTITION P_20170104 

     VALUES LESS THAN(TO_DATE());

-- 删除一个分区

ALTER TABLE EMP_RANGE DROP PARTITION P_20170104 ; 

-- 列表分区      

-- 列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的

create table emp_list

(

  empno    number(4)

 ,ename    varchar2(10)

 ,job      varchar2(9)

 ,mgr      number(4)      

 ,deptno   number(2)

)

   partition by list (deptno)

   (

     partition p_10 values  (10)

    ,partition p_20 values  (20)

    ,partition p_30 values  (30)

    ,partition p_40 values  (40)

   );

   -- 自己往表里面插入数据  然后查询  删除数据

select * from emp_list partition (p_10); -- 查询

alter table emp_list truncate partition  p_10; -- 删除分区的数据

-- 往表里面插入数据

select * from emp_list;

select * from emp_list partition (p_10); -- 指定一个范围表分区查询数据

insert into emp_list values();

commit;

-- 异常:插入的分区关键字未映射到任何分区

-- 添加一个分区 

alter table emp_list add partition p_50 values (50);

-- 验证

select * from USER_TAB_PARTITIONS a where a.table_name =@;

-- 删除一个分区

alter table emp_list drop partition p_50 ; 

-- 工作中得列表分区

-- 一般公司用列表分区  to_char()   年月的字符串

create table emp_list

(

  empno    number(4)

 ,ename    varchar2(10)

 ,job      varchar2(9)

 ,mgr      number(4)      

 ,deptno   number(2)

 ,create_date varchar2(10)

)

   partition by list (create_date)

   (

     partition p_20170201 values  (20170201)

    ,partition p_20170202 values  (20170202)

    ,partition p_20170203 values  (20170203)

    ,partition p_20170204 values  (20170204)

   );

 -- 组合分区 分区里面有 分区

create table emp_range_list

(

    empno    number(4) ,

    ename    varchar2(10),

    job      varchar2(9),

    mgr      number(4),

    hiredate date,

    sal      number(7,2),

    comm     number(7,2), 

    deptno   number(7,2)

)

partition by range(hiredate) subpartition by list (deptno)

(

   partition p_19800101 values less than(to_date('1981-01-01','yyyy-mm-dd'))

          (

              subpartition p_19800101_10 values (10),

              subpartition p_19800101_20 values (20),

              subpartition p_19800101_30 values (30),

              subpartition p_19800101_40 values (40)

          ),

   partition p_19810101 values less than (to_date('1982-01-01','yyyy-mm-dd'))

          (

              subpartition p_19810101_10 values (10),

              subpartition p_19810101_20 values (20),

              subpartition p_19810101_30 values (30),

              subpartition p_19810101_40 values (40)

          ),

   partition p_19820101 values less than (to_date('1983-01-01','yyyy-mm-dd'))

          (

              subpartition p_19820101_10 values (10),

              subpartition p_19820101_20 values (20),

              subpartition p_19820101_30 values (30),

              subpartition p_19820101_40 values (40)

          ),

     partition p_19830101 values less than (to_date('1984-01-01','yyyy-mm-dd'))

          (

              subpartition p_19830101_10 values (10),

              subpartition p_19830101_20 values (20),

              subpartition p_19830101_30 values (30),

              subpartition p_19830101_40 values (40)

          )

);

-- 查询主分区数据

select * from emp_range_list partition (p_19800101); 

-- 删除主分区的数据

alter table emp_range_list truncate partition  p_19800101; 

-- 查询子分区的数据

select * from emp_range_list subpartition(p_19810101_10);

-- 删除子分区的数据

alter table emp_range_list truncate subpartition  p_19810101_10; 

-- 添加一个分区 

alter table emp_range_list add partition p_19840101 

      values less than (to_date('1985-01-01','yyyy-mm-dd'))

          (

              subpartition p_19840101_10 values (10),

              subpartition p_19840101_20 values (20),

              subpartition p_19840101_30 values (30),

              subpartition p_19840101_40 values (40)

          );

-- 删除一个分区

alter table emp_range_list drop partition p_19840101 ;

-- 验证

select * from USER_TAB_PARTITIONS a where a.table_name = @;

 --Hash分区   

 优点:尽可能的让每个分区的数据分布均匀

对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助

hash分区会将表中的数据平均分配到你指定的几个分区中,

列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中

create table hash_test

    (

        stu_id number ,

        age    number ,

        sname  varchar2(30)

   )

   partition by hash(stu_id)

   (

       partition part_01,

       partition part_02,

       partition part_03,

       partition part_04

 );

-- 插入数据测试(创建一个序列对象)

create sequence seq_001

minvalue 1                 --最小值为1

start with 1               --从1开始

nomaxvalue                 --不设上限   可以指定最大值 maxvalue 10

increment by 1             --增长数  可以是 -1

nocycle                    --不循环

cache 30                   --预先在内存中生成30个序列号

;

-- 自动扩展分区

------------- 自动添加 分区

-- 按天自动添加分区

   create table emp_interval_day 

  (id       number

  ,time_col date

  ) 

  partition by range(time_col)

   interval (numtodsinterval(1,))

  (

   partition p_day_1 values less than (to_date())

  );

-- 按月自动添加分区

   create table emp_interval_month 

  (id       number

  ,time_col date

  ) 

  partition by range(time_col)

  interval (numtoyminterval(1,))

  (

   partition p_month_1 values less than (to_date())

  );

-- 删除分区数据

ALTER TABLE emp_interval_month TRUNCATE PARTITION  for (to_date(;));

-- 按年自动添加分区

create table emp_interval_year

  (id       number

  ,time_col date

  ) 

  partition by range(time_col)

  interval (numtoyminterval(1,))

  (

   partition p_year_1 values less than (to_date())

  );

-- 公司中的做法

 create table emp_interval_m

  (id       number

  ,time_col number

  ) 

  partition by range(time_col)

  interval (1)

  (

   partition p_month_1 values less than (20180101)

  );

-- 删除分区数据

ALTER TABLE emp_interval_m TRUNCATE PARTITION  for (20180201);

-- 组合分区的自动扩展分区

CREATE TABLE EMP_RANGE_list

(

    EMPNO  NUMBER(4) ,

    ENAME VARCHAR2(10),

    JOB VARCHAR2(9),

    MGR NUMBER(4),

    HIREDATE DATE,

    SAL  NUMBER(7,2),

    COMM NUMBER(7,2), 

    DEPTNO NUMBER(7,2)

)

PARTITION BY RANGE(HIREDATE) interval (numtoyminterval(1,))

SUBPARTITION BY LIST (DEPTNO)

(

   PARTITION P1 VALUES LESS THAN(TO_DATE())

          (

              SUBPARTITION P1A VALUES (10) ,

              SUBPARTITION P1B VALUES (20),

              SUBPARTITION P1C VALUES (30),

              SUBPARTITION P1D VALUES (40)

          )

);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习与持续学习:人工智能的未来与研究方向

文章目录 1. 持续学习与深度学习1.1 深度学习的局限1.2 持续学习的定义 2. 目标与心智2.1 奖励假说2.2 心智的构成 3. 对研究方法的建议3.1 日常写作记录3.2 中立对待流行趋势 1. 持续学习与深度学习 1.1 深度学习的局限 深度学习注重“瞬时学习”,如ChatGPT虽在语…

Pod 动态分配存储空间实现持久化存储

配置 Pod 以使用 PersistentVolume 作为存储 ​ 关于持久卷的介绍,可以看官方文档 https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/ ​ 持久卷根据存储位置,可以使用本地存储和云存储,如果有云服务平台&#xff0c…

应急响应靶机——linux2

载入虚拟机,打开虚拟机: 居然是没有图形化界面的那种linux,账户密码:root/Inch957821.(注意是大写的i还有英文字符的.) 查看虚拟机IP,192.168.230.10是NAT模式下自动分配的 看起来不是特别舒服&…

DAMODEL丹摩 | 关于我部署与使用FLUX.1+ComfyUI生成了一位三只手的jk美少女这回事

DAMODEL丹摩 | 关于我部署与使用FLUX.1ComfyUI生成了一位三只手的jk美少女这回事 最终效果图FLUX.1简介部署流程1. 创建资源2. 登录实例3. 部署ComfyUI4. 部署FLUX.1 使用流程1. 运行FLUX.1 导入工作流 声明:非广告,为用户使用体验分享 最终效果图 FLUX.…

Linux介绍与安装指南:从入门到精通

1. Linux简介 1.1 什么是Linux? Linux是一种基于Unix的操作系统,由Linus Torvalds于1991年首次发布。Linux的核心(Kernel)是开源的,允许任何人自由使用、修改和分发。Linux操作系统通常包括Linux内核、GNU工具集、图…

钉钉授权登录

一.找开钉钉开发平台【钉钉开放平台 (dingtalk.com)】 二。点击菜单【应用开发】->左边【钉钉应用】->【创建应用】 三。创建应用-》保存成功后,点击自己【新建的应用】,进入详细页面 四。进入应用详细页面。左边【分享设置】 注意:进…

【Python爬虫五十个小案例】爬取豆瓣电影Top250

博客主页:小馒头学python 本文专栏: Python爬虫五十个小案例 专栏简介:分享五十个Python爬虫小案例 🪲前言 在这篇博客中,我们将学习如何使用Python爬取豆瓣电影Top250的数据。我们将使用requests库来发送HTTP请求,…

VUE_使用el.animate实现自定义指令抖动效果

// 在 Vue 2 中注册自定义指令 Vue.directive(shake,{// 当被绑定的元素插入到 DOM 中时inserted(el, binding){let value binding.valueconsole.log(el, binding)// 设置 transform-origin 样式el.style.transformOrigin center bottom;const keyframes [{ transform: rota…

【大模型】LLaMA-Factory的环境配置、微调模型与测试

前言 【一些闲扯】 时常和朋友闲聊,时代发展这么快,在时代的洪流下,我们个人能抓住些什么呢。我问了大模型,文心一言是这样回答的: 在快速发展的时代背景下,个人确实面临着诸多挑战,但同时也充满…

探索光耦:光耦安全标准解读——确保设备隔离与安全的重要规范

在现代科技日新月异的今天,光耦(光电耦合器)作为电子设备中不可或缺的隔离元件,其重要性不言而喻。它不仅在电源调控、工业自动化及医疗设备等关键领域大显身手,更是确保系统电气隔离与运行稳定的守护神。特别是在保障…

嵌入式驱动开发详解2(设备挂载问题)

文章目录 前言设备号设备号的组成设备号的分配静态分配动态分配 驱动挂载与卸载设备节点创建驱动挂载出现问题 前言 驱动的设备挂载和卸载是十分重要的内容,一旦操作不当可能会导致系统崩溃,接下来我将用字符设备的驱动挂载原理进行详细讲解&#xff0c…

Hadoop分布式文件系统(一)——HDFS简介

目录 1. HDFS设计目标2. HDFS组件3. HDFS数据复制4. HDFS健壮性4.1 磁盘数据错误,心跳检测和重新复制4.2 集群均衡4.3 数据完整性4.4 元数据磁盘错误4.5 快照 5. HDFS数据组织5.1 数据块存储5.2 流水线复制5.3 文件的删除和恢复 参考 1. HDFS设计目标 1.错误检测和快…

VUE练习

使用new Vue()创建Vue实例&#xff0c;传入配置对象&#xff08;el data&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial…

论文笔记3-XCube: Large-Scale 3D Generative Modeling using Sparse Voxel Hierarchies

目录 Abtract 相关工作 核心算法&#xff1a; 整体流程概述 具体流程解析 1. 输入&#xff08;Input&#xff09; 2. 稀疏结构 VAE&#xff08;Sparse Structure VAE&#xff09; 3.分层体素潜在扩散&#xff08;Hierarchical Voxel Latent Diffusion&#xff09;…

js.二叉搜索树中第K小的元素

链接&#xff1a;230. 二叉搜索树中第 K 小的元素 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1…

RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange

前言&#xff1a; RabbitMQ 延迟队列插件&#xff08;rabbitmq_delayed_message_exchange&#xff09;是一个社区开发的插件&#xff0c;它为 RabbitMQ 添加了支持延迟消息的功能。通过这个插件&#xff0c;用户可以创建一种特殊的交换机类型 x-delayed-message&#xff0c;该…

Java安全—原生反序列化重写方法链条分析触发类

前言 在Java安全中反序列化是一个非常重要点&#xff0c;有原生态的反序列化&#xff0c;还有一些特定漏洞情况下的。今天主要讲一下原生态的反序列化&#xff0c;这部分内容对于没Java基础的来说可能有点难&#xff0c;包括我。 序列化与反序列化 序列化&#xff1a;将内存…

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域涌现出许多强大的模型&#xff0c;其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论&#xff0c;也在工业界得到了广泛应用。那么&#xff0c;G…

d3-contour 生成等高线图

D3.js 是一个强大的 JavaScript 库&#xff0c;用于创建动态、交互式数据可视化。d3-contour 是 D3.js 的一个扩展模块&#xff0c;用于生成等高线图&#xff08;contour plots&#xff09;。 属性和方法 属性 x: 一个函数&#xff0c;用于从数据点中提取 x 坐标。y: 一个函…

Apache Zeppelin:一个基于Web的大数据可视化分析平台

今天给大家推荐一下 Apache Zeppelin&#xff0c;它是一个基于 Web 的交互式数据接入、数据分析、数据可视化以及协作文档 Notebook&#xff0c;类似于 Jupyter Notebook。 Apache Zeppelin 支持使用 SQL、Java、Scala、Python、R 等编程语言进行数据处理和分析&#xff0c;同时…