【无标题】TDSQL 分片键怎么选?选错等于数据倾斜加跨分片慢查询

「 TDSQL 是分布式数据库,一张逻辑表背后是多个物理分片。分片键(shardkey)决定了数据怎么散、查询怎么走。分片键选错,轻则数据倾斜,重则每条查询都跨分片全表扫。 」

一、六步落地核心链路

▲ 六步链路图(对照正文)

    1. 分片键建表时定死 :建表语句里用 shardkey=列名 指定,后期 ALTER TABLE 不支持改分片键,选错只能重建表。
    1. 主键与唯一索引必须含分片键:广播表除外,否则建表直接报错,这是分布式一致性的硬要求。
    1. 选高基数列:数据经过 hash 后均匀分布到各分片,避免少数分片被压垮。
    1. 选高频查询列:让 WHERE 或 JOIN 最常带的列当分片键,查询尽量落单分片,避免跨分片。
    1. 验证分布均衡 :观察各分片数据量与负载是否均匀,热点分片盯 Threads_running。
    1. 路由与读写分离 :读从库 hint /*slave*/ 必须加 -c 保留注释;管理命令 /*proxy*/ 仅用于 help、show config、show status。

二、对照:反例 vs 推荐

▲ 对照图(对照正文)

|--------|----------------------------|----------------------------------------------|
| 场景 | 反例(容易踩) | 推荐写法 |
| 分片键选择 | 用性别、状态这类低基数列 | 选高基数且分布均匀的列 |
| 查询路由 | 分片键选了查询从不带的列 | 选高频 WHERE 或 JOIN 条件列 |
| 主键设计 | 主键不含分片键 | 主键与唯一索引必须包含 shardkey |
| 读写分离 | 连客户端漏写 -c | 连接加 -c 保留 hint 注释 |
| 管理命令 | 把 /*proxy*/ 套在 EXPLAIN 上 | /*proxy*/ 仅用于 help、show config、show status |

三、常见故障速查命令

|-----------|-------------|----------------------------------------|
| 场景 | 注意点 | 命令 |
| 建表指定分片键 | 后期不可改,务必想清楚 | CREATE TABLE t (...) shardkey=order_id |
| 监控热点 | 看活跃线程而非连接数 | 关注 Threads_running 指标 |
| 误删恢复 PITR | 不直接改原实例 | 走克隆新实例抽数导回 |

带路由注释的语句容易在表格里被客户端当普通注释过滤,建议直接复制到客户端执行,下面单独列出:

-- 强制读从库:客户端连接必须加 -c 保留 hint

SELECT /*slave*/ * FROM t WHERE order_id = 1001;

-- 管理命令前缀:仅 help、show config、show status 三条可用

/*proxy*/ SHOW STATUS;

/*proxy*/ SHOW CONFIG;

▲ 一图速查:核心命令汇总(建议收藏)

小结

分片键在创建表时就定下走向,后期改不了;主键和唯一索引必须包含分片键;优先选"高基数加业务高频查询"的列,让数据均匀、查询落单分片。想系统掌握分布式数据库,可以关注腾讯云数据库工程师认证路线,把分片、路由、容灾串成体系。

------ 本文由 云贝教育 整理分享

相关推荐
L0208245 小时前
Kubernetes Ingress|CNI 网络模型|Calico 网络策略|Pod 调度器完整实战教程
运维·网络·云原生·容器·kubernetes
I Am a robert girl5 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒5 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB6 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
yunlaodacom6 小时前
腾讯云国际站服务代理商:CVM连接TencentDB失败排查指南
云计算·php·腾讯云
SelectDB6 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB6 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析
考拉讲支付7 小时前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构
ADAI_Bowen7 小时前
写文章 - 知乎
大数据·运维·人工智能
云宏信息8 小时前
超融合和存算分离怎么选?从性能、可靠性、扩展、成本四个维度讲述如何精准匹配架构选型 | 附企业降本轻量云方案
运维·服务器·架构·云计算