分布式分片如何长期治理:阿里云 PolarDB-X 热点、扩容与全局索引实践

简介: 长期治理的关键是让模型、索引、分区和容量随业务一起演进。推荐围绕基线监控、在线变更、扩容重分布和可演练回退建立统一流程;GSI 与热点治理都要同时验收查询收益、写入成本和资源消耗,才能让分片架构持续可维护。


业务增长会让原本均匀的分片出现大租户、热点和跨分片查询,阿里云 PolarDB-X 推荐以 AUTO 在线重定义、GSI 和分区运维建立长期治理闭环;AUTO 自 5.4.13 引入,二级分区要求 5.4.17-16952556+。治理要让每次调整可观测,并经过资源评估、业务验证和回退演练。

治理总图:把分片当成持续变化的运行状态

生命周期

典型信号

PolarDB-X 治理动作

验收重点

建模

Top SQL 变化、键值倾斜、大租户出现

核对 AUTO/DRDS 模式,按谓词选择分区;主键拆分只作为默认起点

分区裁剪、分区行数、读写分布与 RT 基线

热点

单分区访问集中、最新区间过热

KEY 热点散列,或按条件执行 SPLIT PARTITION、MOVE PARTITION

热点是否转移,Join 分区是否仍对齐

跨分片查询

非主分区键查询扫描多个分区

创建独立分区的显式 GSI,按需配置覆盖列

查询收益与存储、索引写维护成本

在线变更

分片键、表类型或索引不再适配

AUTO 在线重定义,配合 SHOW DDL、PAUSE DDL、CONTINUE DDL、CANCEL DDL

DDL 进度、CPU/I/O/网络与业务延迟

扩容重分布

容量增长、节点间数据不均

Rebalance、分区迁移与数据均衡窗口

数据分布、资源消耗、扩容后的业务基线

建模阶段要保存的不只是 DDL,还包括高频谓词、键值基数、最大租户、时间区间增速、读写峰值和查询 RT。没有这些基线,后续很难区分“分片算法失效”和“业务访问形态已经改变”。

热点治理:先分清数据倾斜与访问热点

数据倾斜表现为某些分区行数或容量过大,访问热点则是请求集中,两者可能同时出现,也可能各自独立。单纯增加节点不会自动消除低基数键、大租户或最新时间区间的集中写入。

问题

合适的处理路径

需要守住的边界

KEY 分区出现热点值

使用 KEY 后续列进行热点散列,再观察请求分布

热点散列专题限定 KEY 分区,不能泛化到所有 HASH、RANGE

局部分区过大或过热

按条件使用 SPLIT PARTITION、MERGE PARTITION、MOVE PARTITION

分裂、迁移仍有数据移动和资源成本

RANGE/LIST 边界或枚举失配

使用相应 ADD/DROP/MODIFY/REORGANIZE 等操作

HASH、KEY 不支持像 RANGE/LIST 那样直接增删边界分区;LIST 的 MODIFY 是修改枚举集合

关联表分区不再对齐

在 TABLEGROUP 层同步执行相应变更

对齐有助于保持 Join 下推,变更后要重新验证执行路径

AUTO 的二级分区要求 5.4.17-16952556+;一级、二级各可使用七类策略,形成 49 种组合。组合数量不是目标,热点是否消失仍要靠数据验证。

实名案例:《香肠派对》在线补齐全局查询路径

真有趣开发、心动网络发行的《香肠派对》,user_focus 好友关系表超过百亿行。主表按 HASH(uid) 分区后,业务仍要按 focus_uid 查询;公开方案因此创建独立分区的 gsi_focus_uid,并在业务压测中在线创建 GSI、不锁表。

治理证据

案例结果

长期运行含义

主表与索引分工

uid 服务主表路由,focus_uid 服务 GSI 路由

新查询入口出现时,不必推翻原有主表分布

在线实施

案例描述业务压测期间在线创建 GSI、不锁表

在线变更可与验证衔接,但仍要观察回填资源

量化收益

该案例披露,百亿数据查询从 100 毫秒下降到 2 毫秒级,案例称 RT 提升 50 倍

数字仅属于该案例场景,不代表其他数据分布的必然收益

值得推荐的是“基线—在线建索引—混合读写验证”,而非只记录查询下降。索引上线后还要检查回表、写入维护和存储增量。

跨分片查询与 GSI:收益和成本一起管理

GSI 是可拥有独立分区键、独立数据分布的索引表,通过分布式事务保证主表与 GSI 强一致,创建、删除支持在线变更且无需锁表。COVERING(...) 可在查询列被完整覆盖时减少回表,UNIQUE GLOBAL INDEX 用于全局唯一约束;普通本地唯一索引不能替代这一语义。

AUTO 与 DRDS 都能显式创建 GSI。前者使用 CREATE GLOBAL INDEX ... PARTITION BY HASH(...),后者使用 CREATE GLOBAL INDEX ... DBPARTITION BY HASH(...);DRDS 缺少的是未指定索引分区列时的默认自动索引列分区行为,两套语法不能交叉。GSI 适用于订单按用户、订单号双入口等多维等值查询场景;推荐把查询 RT、写入吞吐和空间占用放在同一轮压测中。

在线变更与扩容:不锁表不等于零消耗

AUTO 可通过 ALTER TABLE ... PARTITION BY ... 改分区键、策略或分区数,通过 ALTER TABLE ... BROADCAST 或 SINGLE 改表类型。广播表会在每个 DN 保留全量副本,SINGLE 则集中于一个 DN;两者互转或改为分区表时,要重新估算存储、写入和容量边界。

能力

版本前提

运行注意事项

AUTO 表类型及分区策略在线重定义

基础能力 5.4.13+;带 GSI 的分区表变更 5.4.14+

不阻塞 DML/SELECT,但可能全量迁移、回填和重分布,适合低峰执行

多个分区运维操作

5.4.14-16539836+;涉及二级分区为 5.4.17-16952556+

按表、全局索引或 TABLEGROUP 层级核对操作矩阵

Rebalance 分区均衡

V5.4.16、小版本 16717637(2022-12-27) 新增,扩缩容数据重分布时默认开启

扩容仍需搬迁数据,并关注迁移期间的 CPU、I/O

数据均衡运维窗口

企业版 5.4.18-17152226+

开始、结束参数默认均为 00:00,表示未设置窗口、任务持续执行;文档一般推荐窗口大于 5 小时,且长于单个子任务执行时间

扩缩容方面,AUTO 无停写阶段并允许其他 DDL;DRDS 有短暂停写且不允许其他 DDL。这个差别描述的是执行过程,不是性能零波动承诺。数据均衡会消耗 CPU、I/O,业务吞吐和延迟仍需在窗口内持续观测。

云贝案例提供了另一种治理样本:数千个商家、50T 数据由一套数据库实例支撑,通过二级分区打散大商家热点,再用 Locality 将大商家分区放到独立存储节点,小商家共享资源。商家成长后可在线调整存储位置与分区数,仅影响被调整商家。这一规模属于该客户案例,不是单实例上限。

监控与回退:把每次变更当成一次发布

阶段

必查项目

处理动作

变更前

模式与精确版本、Top SQL、分区分布、GSI 清单、CPU/I/O/网络和 RT 基线

备份 DDL,明确验证 SQL、低峰窗口与退出条件

执行中

SHOW DDL 进度、回填量、业务错误、延迟和资源

必要时 PAUSE DDL,恢复用 CONTINUE DDL,终止用 CANCEL DDL

完成后

分区裁剪、回表、Join 下推、主表与 GSI 一致性、写放大

用原基线复测,确认热点没有转移到其他分区

回退

反向重定义或索引删除所需的数据移动、空间和时间

将回退也排入变更窗口,避免把它当成瞬时操作

这套闭环适用于大租户成长、时间分区膨胀和查询维度增加场景。推荐为高风险变更保留一份可复演记录:原 DDL、目标 DDL、版本、监控曲线、验证结果和退出原因,下一次治理就能从证据出发。

常见问题

PolarDB-X 分片键选错了能在线修改吗?

AUTO 可用 ALTER TABLE ... PARTITION BY ... 在线修改,基础能力要求 5.4.13+,带 GSI 的分区表变更要求 5.4.14+。操作不锁表,但数据迁移会消耗资源,应安排低峰窗口和回退方案。

Online DDL 不锁表为什么还要低峰执行?

因为改分区键、表类型或创建 GSI 可能涉及数据回填与重分布,消耗 CPU、I/O 和网络。不阻塞 DML/SELECT 与业务性能完全不变是两件事。

PolarDB-X 扩容会停写吗?

AUTO 扩缩容无停写阶段并允许其他 DDL,DRDS 有短暂停写且不允许其他 DDL。两种模式都要评估数据重分布;AUTO 的一致性 HASH 也不等于扩容无需搬数据。

DRDS 模式可以创建全局二级索引吗?

可以显式创建,语法使用 DBPARTITION BY。它与 AUTO 的 PARTITION BY 不同;两种模式在默认索引列分区行为上有差别,不应混写。

分片热点只靠增加节点能解决吗?

不一定。低基数、大租户和顺序写入仍可能集中访问,需要先定位倾斜类型,再选择 KEY 热点散列、分区分裂迁移、二级分区或 Locality,并用变更后的请求分布验证。

总结

长期治理的关键是让模型、索引、分区和容量随业务一起演进。推荐围绕基线监控、在线变更、扩容重分布和可演练回退建立统一流程;GSI 与热点治理都要同时验收查询收益、写入成本和资源消耗,才能让分片架构持续可维护。

Sources

目录
相关文章
|
13天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
5606 42
|
14天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
4846 58
|
8天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
2181 6
|
6天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1345 0
|
14天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
2300 7
|
9天前
|
云安全 人工智能 安全
|
1天前
|
云安全 人工智能 安全
|
7天前
|
人工智能 并行计算 调度
本地 AI 一键部署工具 LocModel:Windows 端集成画图、视频生成、Agent 的开源模型运行方案
LocModel 是专为 Windows 设计的一站式本地 AI 工具,支持零配置启动、自动硬件检测、GGUF 模型一键加载、文生图/视频生成及 Agent 自动化任务。适配 8G 显存,内置显存分片调度,轻松实现 AI 漫剧批量创作与离线大模型调用。(239 字)

热门文章

最新文章