postgre分区方式

主要有 3 种:RANGE、LIST、HASH

分区方式 中文 按什么分 典型场景
RANGE 范围分区 数值/日期范围 时间、订单、日志
LIST 列表分区 指定的离散值 国家、地区、业务类型
HASH 哈希分区 哈希计算结果 数据均匀拆分

1. RANGE 范围分区

按照一个连续的范围来分。

比如按照订单日期:

yaml 复制代码
orders
│
├── 1月分区:2026-01-01 ~ 2026-02-01
├── 2月分区:2026-02-01 ~ 2026-03-01
└── 3月分区:2026-03-01 ~ 2026-04-01

创建方式:

sql 复制代码
CREATE TABLE orders (
    id bigint,
    order_date date
) PARTITION BY RANGE (order_date);

例如:

sql 复制代码
CREATE TABLE orders_2026_01
PARTITION OF orders
FOR VALUES FROM ('2026-01-01') TO ('2026-02-01');

也就是:

RANGE = 按区间分。

你资料中的 measurement 就是按照 logdate 做 RANGE 分区。

它特别适合时间数据,比如日志、订单、流水。


2. LIST 列表分区

按照明确指定的几个值来分。

例如有:

ini 复制代码
用户表 users

country = 'CN'
country = 'JP'
country = 'US'

可以:

bash 复制代码
users
│
├── users_asia_1 → CN
├── users_asia_2 → JP
└── users_us     → US

本质就是:

markdown 复制代码
这个值属于哪个列表
        ↓
数据就进入哪个分区

所以:

LIST = 按具体值分类。

例如国家、地区、部门、业务类型等离散值比较适合。资料的定义也是通过显式列出每个分区中允许出现的键值来划分。


3. HASH 哈希分区

HASH 不需要人为规定:

css 复制代码
1月 → A
2月 → B

而是数据库通过计算,把数据分散到几个分区。

例如:

复制代码
user_id
   ↓
HASH计算
   ↓
除以4取余数
   ↓
┌────┬────┬────┬────┐
0    1    2    3
↓    ↓    ↓    ↓
P0   P1   P2   P3

比如:

ini 复制代码
user_id = 1001 → P1
user_id = 1002 → P2
user_id = 1003 → P3
user_id = 1004 → P0

它的重点是:

HASH = 不关心业务范围,主要希望把数据比较均匀地分散到多个分区。

资料中描述为给每个分区指定模数和余数,根据计算结果决定数据属于哪个分区。


三种方式怎么记?

直接记这三个例子:

sql 复制代码
RANGE(范围)
按照时间:
1月 | 2月 | 3月 | 4月

LIST(列表)
按照类别:
中国 | 日本 | 美国

HASH(哈希)
按照计算:
P0 | P1 | P2 | P3

所以选择的时候可以简单判断:

有明显的连续范围 → RANGE;有明确的类别 → LIST;没有明显分类、只是希望数据均匀拆开 → HASH。

另外,资料还提到了子分区 :一个分区本身还可以继续成为分区表,例如先按月份 RANGE 分,再在每个月内部继续分。

相关推荐
wei_shuo1 小时前
KES 故障诊断与应急响应:问题排查、根因分析与应急预案
后端
王中阳Go1 小时前
业务代码凭什么不能直接调 Agent?——我在律所 AI 项目里做的 Harness 运行时治理
人工智能·后端·程序员
SomeB1oody2 小时前
【RustyML入门】7.2. 深入模型持久化
开发语言·后端·机器学习·rust·教程
知几蜗牛2 小时前
0 后端 · 0 数据库 · 0 备案:用 AI 两天搓出的股票管理系统,开源了
前端·后端·llm
风流 少年2 小时前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
__zRainy__2 小时前
Node系列 · 数据库:单表查询
数据库·后端·mysql·node.js
诺伦2 小时前
Rust 错误处理实战:从 unwrap 到优雅 Result 的进阶之路
开发语言·后端·rust
不能放弃治疗3 小时前
上下文压缩机制
后端
QQ_21696290963 小时前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端