达梦数据库系列—36.分区表

news2024/11/16 3:16:55

目录

1、分区表的分类

1.1 范围分区表

1.2 List分区表

1.3  哈希分区表

1.4 多级分区表

二级分区

三级分区

2、分区表的维护

2.1 增加分区

2.2 删除分区

2.3 交换分区

2.4 融合分区

3、全局索引和局部索引


1、分区表的分类

范围(range)水平分区:对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上;

哈希(hash)水平分区:通过指定分区编号来均匀分布数据的一种分区类型,通过在 I/O 设备上进行散列分区,使得这些分区大小基本一致;

列表(list)水平分区:通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。例如,可以对表上的 status 列的值在('A','H','O')放在一个分区,值在('B','I','P')放在另一个分区,以此类推;

多级分区表:按上述三种分区方法进行任意组合,将表进行多次分区,称为多级分区表。

1.1 范围分区表

例:

    CREATE  TABLE  callinfo(

    caller CHAR(15),

    callee CHAR(15),

    time DATETIME,

    duration INT

    )

    PARTITION BY RANGE(time)(

    PARTITION p1 VALUES LESS THAN ('2010-04-01'),

    PARTITION p2 VALUES LESS THAN ('2010-07-01'),

    PARTITION p3 VALUES LESS THAN ('2010-10-01'),

    PARTITION p4 VALUES EQU OR LESS THAN ('2010-12-31')  //'2010-12-31'也可替换为MAXVALUE

    );

1.2 List分区表

例:

    CREATE  TABLE  sales(

    sales_id INT,

    saleman CHAR(20),

    saledate DATETIME,

    city CHAR(10)

    )

    PARTITION BY LIST(city)(

    PARTITION p1 VALUES ('北京', '天津'),

    PARTITION p2 VALUES ('上海', '南京', '杭州'),

    PARTITION p3 VALUES ('武汉', '长沙'),

    PARTITION p4 VALUES ('广州', '深圳')

    );

1.3  哈希分区表

在很多情况下,用户无法预测某个列上的数据变化范围,因而无法实现创建固定数量的范围分区或 LIST 分区。

基于分区键的散列值将行映射到分区中。当用户向表中写入数据时,数据库服务器将根据一个哈希函数对数据进行计算,把数据均匀地分布在各个分区中。

例:

    CREATE  TABLE  sales01(

    sales_id INT,

    saleman CHAR(20),

    saledate DATETIME,

    city CHAR(10)

    )

    PARTITION BY HASH(city)(

    PARTITION p1,

    PARTITION p2,

    PARTITION p3,

    PARTITION p4

    );

1.4 多级分区表

二级分区

例:

CREATE TABLE "SYSDBA"."SALES_NEW"

(

"SALES_ID" INT,

"SALEMAN" CHAR(20),

"SALEDATE" DATETIME(6),

"CITY" CHAR(10))

PARTITION BY LIST("CITY")

SUBPARTITION BY RANGE("SALEDATE") SUBPARTITION TEMPLATE

(

SUBPARTITION  "P2021"  VALUES LESS THAN(DATETIME'2022-01-01 00:00:00'),

SUBPARTITION  "P2022"  VALUES LESS THAN(DATETIME'2023-01-01 00:00:00'),

SUBPARTITION  "P2023"  VALUES LESS THAN(DATETIME'2024-01-01 00:00:00'),

SUBPARTITION  "P2024"  VALUES LESS THAN(DATETIME'2025-01-01 00:00:00'),

SUBPARTITION  "P2025"  VALUES LESS THAN(DATETIME'2026-01-01 00:00:00'),

SUBPARTITION  "P2026"  VALUES LESS THAN(DATETIME'2027-01-01 00:00:00'),

SUBPARTITION  "P2027"  VALUES LESS THAN(DATETIME'2028-01-01 00:00:00'),

SUBPARTITION  "P2028"  VALUES LESS THAN(DATETIME'2029-01-01 00:00:00'),

SUBPARTITION  "P2029"  VALUES LESS THAN(DATETIME'2030-01-01 00:00:00'),

SUBPARTITION  "P2030"  VALUES LESS THAN(DATETIME'2031-01-01 00:00:00'),

SUBPARTITION  "P2099"  VALUES EQU OR LESS THAN(MAXVALUE)

)

(

PARTITION  "P0310"  VALUES('0310      ')   STORAGE(ON "TBS_DATA_1", CLUSTERBTR) ,

PARTITION  "P0311"  VALUES('0311      ')   STORAGE(ON "TBS_DATA_2", CLUSTERBTR) ,

PARTITION  "P0312"  VALUES('0312      ')   STORAGE(ON "TBS_DATA_3", CLUSTERBTR) ,

PARTITION  "P0313"  VALUES('0313      ')   STORAGE(ON "TBS_DATA_4", CLUSTERBTR) ,

PARTITION  "P0314"  VALUES('0314      ')   STORAGE(ON "TBS_DATA_5", CLUSTERBTR) ,

PARTITION  "P0315"  VALUES('0315      ')   STORAGE(ON "TBS_DATA_6", CLUSTERBTR) ,

PARTITION  "P0316"  VALUES('0316      ')   STORAGE(ON "TBS_DATA_7", CLUSTERBTR) ,

PARTITION  "P0317"  VALUES('0317      ')   STORAGE(ON "TBS_DATA_8", CLUSTERBTR) ,

PARTITION  "P0318"  VALUES('0318      ')   STORAGE(ON "TBS_DATA_9", CLUSTERBTR) ,

PARTITION  "P0319"  VALUES('0319      ')   STORAGE(ON "TBS_DATA_10", CLUSTERBTR) ,

PARTITION  "P0335"  VALUES('0335      ')   STORAGE(ON "TBS_DATA_11", CLUSTERBTR) ,

PARTITION  "P9999"  VALUES(DEFAULT)   STORAGE(ON "TBS_DATA_12", CLUSTERBTR)

) STORAGE(HASHPARTMAP(1), ON "TBS_DATA_13", CLUSTERBTR) ;

三级分区

例:

CREATE TABLE STUDENT(

NAME VARCHAR(20),

AGE INT,

SEX VARCHAR(10) CHECK (SEX IN ('MAN','FEMAN')),

GRADE INT CHECK (GRADE IN (7,8,9))

)

PARTITION BY LIST(GRADE)

SUBPARTITION BY LIST(SEX) SUBPARTITION TEMPLATE

(

SUBPARTITION Q1 VALUES('MAN'),

SUBPARTITION Q2 VALUES('FEMAN')

),

SUBPARTITION BY RANGE(AGE) SUBPARTITION TEMPLATE

(

SUBPARTITION R1 VALUES LESS THAN (12),

SUBPARTITION R2 VALUES LESS THAN (15),

SUBPARTITION R3 VALUES LESS THAN (MAXVALUE)

)

(

PARTITION P1 VALUES (7),

PARTITION P2 VALUES (8),

PARTITION P3 VALUES (9)

);

2、分区表的维护

2.1 增加分区

--范围分区表

  ALTER TABLE callinfo

  ADD PARTITION p5 VALUES LESS THAN ('2011-4-1') STORAGE (ON ts5);

--List分区表

  ALTER TABLE sales

  ADD PARTITION p5 VALUES ('拉萨', '呼和浩特') STORAGE (ON ts5);

--hash分区表

ALTER TABLE SYSDBA.HASH_TEST ADD PARTITION P4;

2.2 删除分区

  ALTER TABLE callinfo DROP PARTITION p1;

注:hash分区不支持删分区

2.3 交换分区

DM 支持用 ALTER TABLE EXCHANGE PARTITION 语句将分区数据跟普通表数据进行交换,交换的两张表需要具有相同的结构。仅范围分区和 LIST 分区支持交换分区。

CREATE  TABLE  callinfo_2011Q2(

caller CHAR(15),

callee CHAR(15),

time DATETIME,

duration INT

);

//交换分区

ALTER TABLE callinfo EXCHANGE PARTITION p2 WITH TABLE callinfo_2011Q2;

//删除原分区

ALTER TABLE callinfo DROP PARTITION p2;

//新增分区,记录2011年第二季度通话记录

ALTER TABLE callinfo

ADD PARTITION p6 VALUES LESS THAN ('2011-7-1') STORAGE (ON ts2);

2.4 融合分区

例:

  ALTER TABLE callinfo MERGE PARTITIONS p3, p4 into partition p3_4;

哈希分区表不支持。

拆分分区

  ALTER TABLE callinfo SPLIT PARTITION p3_4 AT ('2010-9-30') INTO (PARTITION p3, PARTITION p4);

3、全局索引和局部索引

全局索引:全局索引是以整张表的数据为对象而建立的索引

局部索引:局部索引是在分区表的每个分区上创建的索引

全局索引:带GLOBAL 关键字否则创建局部索引。

//首先,创建表t1

create table t1(c1 int, c2 int, c3 int)  partition by range(c1)

(

partition p1 values less than(100),

partition p2 values less than(200),

PARTITION p3 VALUES EQU OR LESS THAN (MAXVALUE)

);

//其次,指定GLOBAL创建全局索引idx1

create index idx1 on t1(c2) GLOBAL;

//再次,缺省GLOBAL创建局部索引idx2

create index idx2 on t1(c3);

创建分区表后,每个分区会自动创建一个聚簇索引

注:如果表中指定了PK,默认创建全局索引,若没有指定PK,创建局部索引(PARTITIONED)

表上创建全局索引,每个分区会创建一个Normal索引

表上创建局部索引,每个分区也会创建一个Normal索引

查询表的某个分区(T1_P2),走局部索引。

达梦技术社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

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

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

相关文章

【LLM大模型】AI大模型大厂面试真题:「2024大厂大模型技术岗内部面试题+答案」

AI大模型岗的大厂门槛又降低了!实在太缺人了,大模型岗位真的强烈建议各位多投提前批,▶️众所周知,2025届秋招提前批已经打响,🙋在这里真心建议大家6月7月一定要多投提前批! 💻我们…

【深度学习|目标跟踪】SSD+Sort实现MOT!

SSDSort实现目标跟踪 源码地址1、🙌🏻匈牙利匹配算法1.1 什么是匈牙利匹配1.2 什么是二分图:1.3 最大匹配1.4 最优匹配1.5 最小点覆盖1.6 交替路1.7 增广路1.8 匈牙利匹配具体流程以及实例1.9 广度优先匹配1.10 深度优先匹配1.11 给匹配加权来…

SQL—数据库与表操作

目录 SQL语句分类 DDL 数据库操作 1. 查询所有数据库 2. 查询当前数据库 3. 创建数据库 案例:创建一个itcast数据库,使用数据库默认的字符集 案例:创建一个itheima数据库,并且指定字符集 4. 删除数据库 5. 切换数据库…

Java从入门到精通 (十) ~ 计算机是如何工作的呢 ?

每天进步一点点,每天创造一点点,每天做事多一点,愿你事事都领先,卓越成绩现眼前,美好生活一天又一天。 文章目录 目录 前言 前置知识 认识一下计算机的真实相貌 都说计算机使用二进制传输,为什么要使…

哇!0.8秒启动!Linux快速启动方案分享,全志T113-i国产平台!

本文主要介绍基于创龙科技TLT113-EVM评估板(基于全志T113-i)的系统快速启动方案,适用开发环境如下。 Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu18.04.4 64bit U-Boot:U-Boot-2018.07 Kernel:Linux-5.4.61、Li…

政策收紧下,给EI人的一个小建议!

自中央大力推动文化体制改革、促进文化产业加快发展以来,我国出版业的数字化转型升级工作拉开序幕。其后,得益于新技术的发展、市场趋势的变化,数字出版开始出现“井喷”,出版融合成绩巨大,但也面临诸多挑战&#xff0…

手持气象站:便携与精准的完美结合

在气象监测领域,手持气象站以其独特的优势特点,正逐渐成为专业人士和爱好者的首选工具。这款小巧而强大的设备,将便携性与精准性完美融合,为各种户外活动和科学研究提供了极大的便利。 首先,手持气象站的最大亮点在于其…

虚拟主播实时直播技术方案:以年轻人互动方式探索直播新玩法2

随着互联网将内容传播的渠道变得逐渐丰富,观众对直播内容形式、互动玩法的多元化要求越来越高,文旅、电商、企业品牌、广电、泛娱乐MCN、游戏动漫等等领域纷纷主动迎合Z世代喜好,利用虚拟人直播内容抢夺观众的注意力,以独特的虚拟…

2024 杭电多校 第四场

分组 给定 n 个正整数 a1,a2,…,an (1≤ai<2m) 以及 0 到 2m−1 的权重 w0,w1,…,w2m−1&#xff1b;你需要把这 n 个正整数分成四组 A,B,C,D&#xff0c;令 f(A),f(B),f(C),f(D) 分别表示每组中所有数字的异或和&#xff0c;你的分组方案需要最小化 wf(A),wf(B),wf(C),wf(…

智慧社区的秘密武器:数据可视化的力量

在现代城市的发展中&#xff0c;智慧社区已成为提升居民生活品质和管理效率的重要方式。而数据可视化作为信息技术的关键工具&#xff0c;正是实现智慧社区目标的强大助推器。通过将复杂的数据转化为直观的图表和可视化图像&#xff0c;数据可视化不仅能够帮助社区管理者快速理…

前端工具专有名词记录

目录 前言 正文 1.包管理器 2.构建工具和开发环境&#xff08;项目管理器&#xff09; 3.自动化测试工具 4.JavaScript 框架和模版 5.代码质量工具 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so…

全新小体积RK3562核心板,解锁神秘技能!

RK3562小体积金手指系列核心板基于瑞芯微四核Cortex-A53Cortex-M0处理器设计&#xff0c;工作主频高达2GHz&#xff0c;最高搭载4GB高速LPDDR4、32GB eMMC。该核心板拥有204 Pin脚&#xff0c;尺寸仅为67.6mm *45mm&#xff0c;支持千兆网、USB3.0、串口、PCIE、HDMI等丰富外设…

vite tsx项目的element plus集成 - 按需引入踩坑

前面我们进行了开源组件的自研&#xff0c;很多组件可直接用现成的开源组件库&#xff0c;并不需要自己重复造轮子&#xff0c;为此我们讲如何在当前vite vitepress tsx技术整合的项目中实现element plus组件的按需引入&#xff0c;同时解决遇到的一些坑。 安装Element Plus…

《史上最简单的SpringAI+Llama3.x教程》-03-ETL pipeline解决RAG文件处理问题

在企业内部构建基于大型语言模型&#xff08;LLM&#xff09;的应用程序时&#xff0c;数据的提取、转换和加载&#xff08;ETL&#xff09;过程至关重要。Spring AI 提供了一个集成的框架&#xff0c;可以简化这一过程&#xff0c;特别是在使用 LLM 进行检索增强生成&#xff…

Postman 接口测试工具简易使用指南

一、Postman是什么? 我通过kimi问了这样一个问题&#xff0c;它给我的回答是这样的: 它的回答也算比较中规中矩&#xff0c;简单的说postman实际上就是一款接口测试工具&#xff0c;同时它还可以编写对应的测试脚本以及自动生成对应的API文档&#xff0c;结合我的习惯来说&am…

Springboot处理跨域请求

文章目录 概要同源策略跨域问题复现解决跨域方法1方法2方法3 jwt拦截器验证token防止请求存在缓存 概要 跨域请求&#xff08;Cross-Origin Requests&#xff09;指的是在一个网页中加载的资源来自与当前网页不同的域、协议或端口。浏览器出于安全考虑&#xff0c;默认会限制这…

Mybatis超级方便操作数据方式(注解+封装mapper接口)!!!

Mybatis作为一个流行的持久层框架&#xff0c;其优化了Java程序与数据库的交互过程。它的核心在于使用Mapper接口与XML映射文件或注解绑定来实现对数据库的操作。这种方式不仅简化了数据库操作&#xff0c;还提升了开发效率&#xff0c;使得开发者可以从繁琐的JDBC代码中解放出…

索引排序以及explain

标题 explain函数typekeyextrarows 索引排序 前言&#xff0c;如无特殊提醒&#xff0c;默认建立如下索引。 explain函数 type type列反映了访问类型。表示mysql如何找到数据。访问类型有很多种&#xff0c;从全表扫描到索引扫描、范围扫描、唯一索引查询、常数引用等。这里列…

Oracle <left> join on where 先过滤还是先join

一、left join onon条件是在生成临时表时使用的条件&#xff0c;它不管on中的条件是否为真&#xff0c;都会返回左边表中的记录。 二、left join on and&#xff08;1&#xff09;如果and语句是对左表进行过滤的&#xff0c;那么不管真假都不起任何作用。&#xff08;2&#x…

视频剪辑免费素材哪里能找到?

在创作视频时&#xff0c;素材的选择至关重要。为了让您的项目更具吸引力和专业性&#xff0c;我整理了8个剪辑必备素材网站&#xff0c;它们提供了丰富多样的资源&#xff0c;从高清视频到优质音乐&#xff0c;应有尽有。让我们一起探索这些资源丰富、质量上乘的平台&#xff…