华为高斯(GaussDB)数据库中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格
以下是GaussDB中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格:
1. Range分区(按范围分区)
场景:按订单日期范围分区(如按季度)。
创建表
-- 创建按日期范围分区的销售订单表
CREATE TABLE sales_order (order_id INT PRIMARY KEY,order_date DATE NOT NULL,amount DECIMAL(10,2)
)
PARTITION BY RANGE (order_date) (PARTITION p2023q1 VALUES LESS THAN ('2023-04-01'),PARTITION p2023q2 VALUES LESS THAN ('2023-07-01'),PARTITION p2023q3 VALUES LESS THAN ('2023-10-01'),PARTITION p2023q4 VALUES LESS THAN ('2024-01-01')
);
插入数据
INSERT INTO sales_order (order_id, order_date, amount)
VALUES (1, '2023-03-15', 100.00), -- 属于p2023q1(2, '2023-05-20', 200.50), -- 属于p2023q2(3, '2023-08-10', 150.75); -- 属于p2023q3
查询数据
-- 查询2023年Q2的订单
SELECT * FROM sales_order
WHERE order_date BETWEEN '2023-04-01' AND '2023-06-30';
更新数据
-- 更新Q2订单金额
UPDATE sales_order
SET amount = amount * 1.1
WHERE order_date BETWEEN '2023-04-01' AND '2023-06-30';
删除数据
-- 删除Q1所有订单
DELETE FROM sales_order
WHERE order_date < '2023-04-01';
2. List分区(按列表分区)
场景:按地区代码分区(如北美、欧洲、亚洲)。
创建表
CREATE TABLE region_sales (region_code VARCHAR(2) NOT NULL,sales_id INT PRIMARY KEY,total_sales DECIMAL(10,2)
)
PARTITION BY LIST (region_code) (PARTITION p_na VALUES IN ('US', 'CA'), -- 北美PARTITION p_eu VALUES IN ('DE', 'FR'), -- 欧洲PARTITION p_as VALUES IN ('CN', 'JP') -- 亚洲
);
插入数据
INSERT INTO region_sales (region_code, sales_id, total_sales)
VALUES ('US', 101, 50000.00), -- 北美分区('DE', 102, 30000.00), -- 欧洲分区('CN', 103, 45000.00); -- 亚洲分区
查询数据
-- 查询欧洲地区的销售数据
SELECT * FROM region_sales
WHERE region_code IN ('DE', 'FR');
更新数据
-- 更新亚洲地区的销售额
UPDATE region_sales
SET total_sales = total_sales * 1.05
WHERE region_code IN ('CN', 'JP');
删除数据
-- 删除北美分区的所有数据
DELETE FROM region_sales
WHERE region_code IN ('US', 'CA');
3. Hash分区(按哈希值分区)
场景:按用户ID哈希值均匀分布数据(如分片存储)。
创建表
CREATE TABLE user_profile (user_id INT PRIMARY KEY,username VARCHAR(50),email VARCHAR(100)
)
PARTITION BY HASH (user_id)
PARTITIONS 4; -- 分为4个分区
插入数据
INSERT INTO user_profile (user_id, username, email)
VALUES (1001, 'Alice', 'alice@example.com'),(1002, 'Bob', 'bob@example.com'),(1003, 'Charlie', 'charlie@example.com');
查询数据
-- 查询特定用户(哈希分区通过键值自动定位)
SELECT * FROM user_profile
WHERE user_id = 1001;
更新数据
UPDATE user_profile
SET email = 'alice.new@example.com'
WHERE user_id = 1001;
删除数据
DELETE FROM user_profile
WHERE user_id = 1002;
总结对比表格
| 分区类型 | 适用场景 | 分区键 | 分区创建方式 | 优点 | 缺点 |
|---|---|---|---|---|---|
| Range | 按时间、数值范围分区 | 连续值(如日期、金额) | PARTITION BY RANGE (column) | 易管理,适合时间序列数据 | 分区边界需预估,扩展时需手动添加分区 |
| List | 按离散值列表分区(如地区、类型) | 离散值(如地区代码、状态) | PARTITION BY LIST (column) | 精确控制分区归属 | 需提前定义所有可能值,扩展灵活性差 |
| Hash | 均匀分布数据(如分片) | 任意字段(如ID) | PARTITION BY HASH (column) + 分区数 | 自动均匀分布,查询/写入性能高 | 无法按范围查询,分区键选择影响性能 |
关键操作说明
-
添加新分区(以Range为例):
ALTER TABLE sales_order ADD PARTITION p2024q1 VALUES LESS THAN ('2024-04-01'); -
删除分区(以List为例):
ALTER TABLE region_sales DROP PARTITION p_na; -
合并分区(以Hash为例):
ALTER TABLE user_profile COALESCE PARTITION 2; -- 合并为2个分区
通过以上示例和对比,可根据业务需求选择合适的分区策略,优化数据分布和查询性能。
相关文章:
华为高斯(GaussDB)数据库中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格
以下是GaussDB中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格: 1. Range分区(按范围分区) 场景:按订单日期范围分区(如按季度)。 创建表 -- 创建按日期范…...
Go语言从零构建SQL数据库(4)-解析器
SQL解析器:数据库的"翻译官"图解与代码详解 图解SQL解析过程 SQL解析器就像是人类语言与计算机之间的翻译官,将我们书写的SQL语句转换成数据库能够理解和执行的结构。 #mermaid-svg-f9gAqHutDLL4McGy {font-family:"trebuchet ms"…...
【Linux网络与网络编程】05.应用层自定义协议序列化和反序列化
前言 本篇博客通过网络计算器的实现来帮助各位理解应用层自定义协议以及序列化和反序列化。 一、认识自定义协议&&序列化和反序列化 我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序都是在应用层。前面我们说到:协议是一种…...
Android Gradle、Android Gradle Plugin、BuildTool关系
1. Gradle 的定位:通用构建工具 Gradle 是一个通用的跨平台构建工具,支持多种语言(如 Java、Kotlin、C)和项目类型 它的核心功能包括: 任务自动化:通过 Groovy/Kotlin DSL 脚本定义编译、测试、打包等…...
Java的Selenium的特殊元素操作与定位之时间日期控件
分为两种情况: 控件没有限制手动输入,则直接调用sendKeys方法写入时间数据 //时间日期控件处理 chromeDriver.get ("https://www,fliggy,com/?ttidsem.000000736&hlreferidbaidu.082076&route sourceseo"); chromeDriver.findElement (By.xpat…...
Flutter之页面布局二
目录: 1、列表布局1.1、基础列表1.2、水平滑动的列表1.3、网格列表1.3、不同列表项的列表1.4、包含间隔的列表1.6、长列表 2、滚动2.1、浮动的顶栏2.2、平衡错位滚动 1、列表布局 1.1、基础列表 import package:flutter/material.dart;void main() > runApp(con…...
RCE漏洞的小点总结
RCE简介与危害:包括远程代码执行和远程命令执行漏洞。 在很多web应用中,开发人员会使用一些函数,这些函数以一些字符串作为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时,就…...
设计模式简述(十)责任链模式
责任链模式 描述基本使用使用 描述 如果一个请求要经过多个类似或相关处理器的处理。 可以考虑将这些处理器添加到一个链上,让请求逐个经过这些处理器进行处理。 通常,在一个业务场景下会对整个责任链进行初始化,确定这个链上有哪些Handler…...
主相机绑定小地图
资源初始化:在类中通过 property 装饰器定义主相机、小地图相机、小地图精灵等资源属性,便于在编辑器中赋值。在 start 方法里,当确认这些资源存在后,创建渲染纹理并设置其大小,将渲染纹理与小地图相机关联,…...
单片机实现多线程的方法汇总
在单片机上实现“多线程”的方法有几种,下面按照从简单到复杂、从轻量到系统性来列出常见的方案: 🧵 一、伪多线程(最轻量) 方法:主循环 状态机 / 定时器轮询 主循环中轮流调用各个任务的处理函数&#x…...
Java八股文-List集合
集合的底层是否加锁也就代表是否线程安全 (一)List集合 一、数组 array[1]是如何通过索引找到堆内存中对应的这块数据的呢? (1)数组如何获取其他元素的地址值 (2)为什么数组的索引是从0开始的,不可以从1开始吗 (3)操作数组的时间复杂度 ①查找 根据索引查询 未…...
快手Python开发面经及参考答案
目录 Python 的深浅拷贝有什么区别?请举例说明。 Python 函数声明中有三种类型的参数,分别说明它们的区别。 Python 中的迭代器是怎么使用的? Python2 和 Python3 之间的区别有哪些(例如 range 和 xrange 等方面)? Python 的线程同步问题是怎样的?详细讲解 GIL 的原…...
谈谈策略模式,策略模式的适用场景是什么?
一、什么是策略模式? 策略模式(Strategy Pattern)属于行为型设计模式。核心思路是将一组可替换的算法封装在独立的类中,使它们可以在运行时动态切换,同时使客户端代码与具体算法解耦。它包含三个…...
从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.2.3行业案例:智能客服中的图文交互系统
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第四部分:工程实践与部署4.2.3 行业案例:智能客服中的图文交互系统1. 图文交互系统的核心挑战与价值2. 系统架构设计2.1 分层架构2.2 Adapter技术应用3. 行业应用案例…...
华为IP(4)
VRRP(虚拟路由冗余协议) 前言: 局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果默认网关设备发生故障,那么所有用户终端访问外部网络的流量将会中断。可以通过部署多个网关的方式来解决单点故障…...
计算机网络中科大 - 第1章 结构化笔记(详细解析)
博主主页 目录 **1. 计算机网络概述****1.1 计算机网络的定义****1.2 计算机网络的发展** **2. 计算机网络的组成与分类****2.1 计算机网络的组成****2.2 计算机网络的分类****按地理范围****按拓扑结构****按交换方式** **3. 计算机网络的性能指标****4. 计算机网络体系结构**…...
【神经网络】python实现神经网络(三)——正向学习的模拟演练
有了之前的经验(【神经网络】python实现神经网络(二)——正向推理的模拟演练),我们继续来介绍如何正向训练神经网络中的超参(包含权重以及偏置),本章大致的流程图如下: 一.损失函数 神经网络以某个指标为基准寻求最优权重参数,而这个指标即可称之为 “损失函数” 。(…...
PPTAgent:一款开源免费生成和评估幻灯片的项目
这篇文章介绍一下PPTAgent,一个从文档自动生成演示文稿的创新系统。该系统从人类的展示创作方法中汲取灵感,采用两步流程来确保卓越的整体质量。此外,本文还介绍了PPTEval,这是一个综合评估框架,可以跨多个维度评估演示…...
配置管理:夯实软件开发与运维根基
配置管理是对系统配置信息进行管理的活动,以下从定义、目的、主要活动、实施流程等方面为你详细介绍: 一、定义 配置管理是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程&a…...
Java 大视界 -- Java 大数据在智能供应链库存优化与成本控制中的应用策略(172)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Cocos Creator 进行 Web 发布后,目录结构解析
在使用 Cocos Creator 进行 Web 发布后,生成的目录结构通常包含以下内容,下面为你详细介绍: 1. index.html 这是 Web 项目的入口 HTML 文件,它会加载所需的 JavaScript 文件和资源,从而启动游戏或应用程序。示例代码…...
解决Spring Boot Test中的ByteBuddy类缺失问题
目录 解决Spring Boot Test中的ByteBuddy类缺失问题前奏问题描述问题解决第一步:移除ByteBuddy的特定版本号第二步:更新maven-surefire-plugin配置第三步:清理并重新构建项目 结语 解决Spring Boot Test中的ByteBuddy类缺失问题 前奏 今天&…...
Postman参数化设置如何设置?
在 Postman 里,参数化设置能让你用不同的数据多次运行同一个请求,这对测试不同输入时的 API 响应非常有用。下面为你详细介绍 Postman 参数化设置的方法。 1. 准备数据文件 Postman 支持 CSV 和 JSON 格式的数据文件。 CSV 文件 CSV 文件由逗号分隔的…...
斯坦福大学李飞飞团队新突破!FlowMo 革新图像 Tokenizer
当我们悠然刷着手机,看到一张可爱猫咪的照片时,大脑会瞬间识别出「这是一只猫」,这一切不过是电光火石间的事儿。但在计算机的 “眼中”,情况却复杂得超乎想象。假设这是一张10001000像素的彩色照片,在计算机的世界里&…...
基于 Jackson 的 JSON 工具类实现解析与设计模式应用
一、项目背景与功能概览 在企业级开发中,JSON 序列化/反序列化是高频操作。本方案基于 Jackson 实现了一个双模式兼容(独立使用 Spring 整合)、安全可靠的 JSON 工具类,主要提供以下能力: ✅ 常用 JSON 转换方法✅ …...
87.在线程中优雅处理TryCatch返回 C#例子 WPF例子
在C#异步编程中,正确处理异常是确保程序稳定运行的关键。今天,我们通过一个实际的示例,展示如何在异步线程中使用try-catch块处理异常,并通过标志变量控制流程。同时,我们也会展示一个错误的示例,以便更好地…...
Vue + Axios + Mock.js 全链路实操:从封装到数据模拟的深度解析
一、项目架构深度设计 1.1 分层架构模式 采用经典的前端分层架构,实现高度可维护性: src/ ├─ api/ # 接口管理 │ └─ home.js # 模块化接口 ├─ mock/ # 模拟数据 │ ├─ index.js # Mock入口 │ └─ home.js # 首…...
博客文章:深入分析 PyMovie - 基于 Python和 MoviePy 的视频管理工具
这是一个使用 wxPython 构建界面、moviepy 处理视频的自定义 GUI 应用程序。该工具提供了视频播放、元数据提取、格式转换、视频裁剪和截图等功能。通过分析其设计和实现,我们将了解其工作原理、优点和潜在的改进空间。 C:\pythoncode\new\output\pymovieSample.py …...
Go基础一(Maps Functions 可变参数 闭包 递归 Range 指针 字符串和符文 结构体)
Maps 1.创建map make(map[键类型]值类型) 2.设置键值对 name[key]value; 3. name[key]获取键值 3.1 key不存在 则返回 0 4.len()方法 返回 map 上 键值对数量 len(name) 5.delete()方法 从map中删除 键值对 delete(name,key) 6.clear()方法 map中删除所有键值对 clear(name) 7…...
2025年渗透测试面试题总结-某 携程旅游-基础安全工程师(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 携程旅游-基础安全工程师 反序列化原理 核心原理 扩展分析 SQL注入本质 核心原理 扩展分析 SQL注…...
