TiDB 从入门到实战|Java 程序员的分布式 SQL 数据库课程
为什么要学 TiDB?
当业务数据涨到千万、亿级,MySQL 单表开始变慢,你的第一反应大概率是分库分表——本站云岚到家项目第九章就完整演练过用 ShardingSphere-JDBC 对订单库做水平拆分。但只要你真上过分库分表,就会被这些问题反复折磨:
- 分片键怎么选、怎么记:查询不带分片键就要扫所有分片,业务 SQL 处处被分片逻辑绑架。
- 跨库 JOIN / 聚合 / 分页失效:
LIMIT翻页、GROUP BY、事务都要在应用层或中间件里自己拼。 - 全局唯一 ID 要额外造:雪花算法、号段模式,一个自增都得专门设计。
- 扩容 = rebalance 搬家:加机器要迁移数据、双写、灰度、校验,运维一顿操作心惊胆战。
- DDL 铺到 N 个库:加一列要在几十上百张表上逐个执行。
TiDB 的定位就是「让你不用再分库分表」:它是 PingCAP 开源的分布式 SQL 数据库,兼容 MySQL 协议、对外呈现为一个「大到几乎不需要拆」的单一逻辑库,数据在底层自动按 Region 切分、多副本 Raft 一致性、在线扩缩容对应用透明,还自带 HTAP(事务 + 分析一体)。你用 MySQL 的写法和 Java 的 MySQL 驱动连它,但省掉了分库分表在开发和运维上的绝大部分复杂度。
本课程参考 TiDB 官方中文文档 的知识体系重新组织,面向做过分库分表的 Java 程序员,所有示例用 Java 代码书写(沿用 MySQL Connector/J + Spring Boot + MyBatis-Plus),每个能力都给出「MySQL / 分库分表 vs TiDB」的对照。
一条主线贯穿全课:TiDB 不是另一个 MySQL,而是「替代 MySQL + 分库分表中间件 + 一堆运维工具」的一整套方案。 学它的重点,是把你在分库分表上攒下的经验「翻译」成 TiDB 的原生能力。
🎯 章节与学习目标总览
| 章节 | 主题 | 学完你将能够 |
|---|---|---|
| 第1章 | 认识 TiDB 与整体架构 | 讲清计算存储分离的四大组件(TiDB Server/PD/TiKV/TiFlash)各自职责;理解它为何能免掉分库分表;用 tiup 起一个 playground 集群,用 MySQL 驱动跑通 Java 首连(端口 4000) |
| 第2章 | MySQL 兼容性与差异清单 | 分得清「高度兼容」和「不支持/行为不同」:无存储过程/触发器/外键/FULLTEXT,自增 ID 会跳号、默认排序规则、隔离级别 RC/SI、事务模型差异,避免带着 MySQL 惯性踩坑 |
| 第3章 | TiDB vs 分库分表全面对比 | 拿你在 yunlan 第九章 的 ShardingSphere 方案逐项对照,从开发(分片键/跨库 JOIN/分布式事务/全局 ID/扩容)与运维(rebalance/双写/迁移/监控)两维,量化 TiDB 到底省了哪些事 |
| 第4章 | 数据建模与分布式特性 | 理解主键与 _tidb_rowid、用 SHARD_ROW_ID_BITS/AUTO_RANDOM 打散写入热点、PRE_SPLIT_REGIONS 预分裂、Region 多副本与 Placement、全局索引与 TiFlash 列存副本 |
| 第5章 | Java 集成实战 | 用 MySQL Connector/J + HikariCP 连 TiDB、MyBatis-Plus DbType.MYSQL 正确分页、配置悲观/乐观事务 tidb_txn_mode、按 TiDB 错误码做重试,吃透 Java 连 TiDB 的常见坑清单 |
| 第6章 | HTAP、执行计划与调优 | 读 EXPLAIN (ANALYZE) 执行计划、理解 Coprocessor 下推与统计信息、用 TiFlash 列存 + MPP 加速分析、READ_FROM_STORAGE hint、定位热点与资源管控 Resource Control |
| 第7章 | 迁移与日常运维 | 用 DM 做 MySQL/分库分表 → TiDB 的全量+增量迁移、用 Lightning 大批量导入、BR 备份恢复、理解 GC 机制、在线扩缩容、Prometheus+Grafana+Dashboard 监控、生产上线 checklist |
🧭 建议学习路径
- 系统学习:按章节顺序。第 1~2 章建立架构认知并校准 MySQL 惯性(约 2 天),第 3 章是全课灵魂——把「分库分表经验」映射成 TiDB 思维(约 1 天),第 4~5 章进入建模与 Java 落地(约 3 天),第 6~7 章补齐性能与运维全景(约 3 天)。
- 做过分库分表、想评估要不要上 TiDB:直奔 第3章 对比表 + 第2章 不兼容清单,两章读完基本能做技术选型决策。
- 急着写代码:第 1 章 tiup 起集群 → 第 5 章 Java 连接与 MyBatis-Plus 跑通 → 语法回查第 2 章 → 上线前务必读第 4 章热点、第 6 章执行计划、第 7 章迁移。
前置要求
本课程默认你:熟悉 MySQL 的 CRUD/索引/事务/主从;最好读过本站 云岚到家第九章·分库分表,对 ShardingSphere-JDBC、分片键、全局 ID 有实战体感;会用 Java + Maven + Spring Boot。TiDB 从零讲起,不需要分布式理论基础。
🛠 配套环境
- 数据库:TiDB v8.5 LTS(开源版,兼容 MySQL 8.0 协议与生态)
- 起集群:
tiup playground(单机体验)/tiup cluster(生产拓扑) - Java 驱动:直接用 MySQL Connector/J(
com.mysql.cj.jdbc.Driver),无需专用驱动 - 框架:Spring Boot 3.x + MyBatis-Plus 3.5.x(
DbType.MYSQL) - 工具:MySQL 客户端 / Navicat / DBeaver 均可连;TiDB Dashboard(Web 管控)
📚 站内的黄金搭档
- 分库分表前史:云岚到家第九章·分库分表与 ShardingSphere(本课程第 3 章的对照基准)
- 关系型基础:MySQL 从入门到精通
- 同为 MySQL 生态的国产分布式/单机方案对照:达梦数据库从入门到实战
- 分布式事务专题:分布式事务(TiDB 的 Percolator 两阶段提交可与之一并理解)
- 文档数据库的扩容思路对照:MongoDB 从入门到实战·分片
- 手写 SQL 没处练?上 SQL 练习场
官方参考资料:TiDB 文档中心(中文)、MySQL 兼容性对比。本课程是其「Java 程序员 + 分库分表背景视角」的中文精编实战版。
老师介绍
老苗一对一私教:https://yjoffer.com/aboutus/one2one/one2one.html
