TiDB

返回 分布式数据库

TiDB 是 PingCAP 开源的分布式 NewSQL 数据库:对外 MySQL 协议兼容,存储由 TiKV(行存、Raft 多副本)承担,计算由 TiDB Server(无状态 SQL 层)承担,集群元数据由 PD(Placement Driver) 调度。适合单表/总数据量超大且希望减少自研分片运维的团队。


架构

应用(JDBC / MyBatis,与 MySQL 类似)
        │
        ▼
   TiDB Server(SQL 解析、优化、执行)
        │
   ┌────┴────┐
   ▼         ▼
  PD        TiKV 集群(Region 分片,Raft 复制)
(调度、    每个 Region 默认 ~96MB,自动分裂/迁移
 元数据)
组件职责
TiDB Server无状态,可水平加节点扛连接与 SQL
TiKV分布式 KV,数据按 Region 分片并多副本
PDRegion 分布、负载均衡、时间戳分配(TSO)
TiFlash(可选)列存副本,HTAP 实时分析

核心特性

特性说明
水平扩展加 TiDB / TiKV 节点扩容,无需应用改分片键
高可用Region 多副本 + Raft,节点故障自动选主
分布式事务Percolator 模型 + 乐观/悲观锁
MySQL 兼容多数 OLTP SQL、常用函数;部分方言需对照文档
HTAPTiFlash 同步 TiKV 数据,分析查询不打断主库

与「MySQL + ShardingSphere」对比

维度TiDBMySQL + ShardingSphere
分片集群内置 Region业务配置分片规则
扩容加节点,PD 调度数据重分布 + 路由变更
跨分片 SQL优化器处理(仍忌大范围扫)广播查询成本高
运维TiDB 生态工具(Backup、DM)自管多套 MySQL
迁移从 MySQL 可用 TiDB Data Migration(DM)双写 + DataX 等

何时仍选 ShardingSphere:强依赖现有 MySQL 运维体系、分片规则已稳定、暂不上分布式库。


使用注意

建议
主键仍建议离散或趋势递增(避免热点 Region),可用 AUTO_RANDOM
大事务控制事务行数与时长,避免锁放大
索引与 MySQL 类似需合理建索引,见 索引
分析重查询走 TiFlash 或导出到 ClickHouse
事务跨服务库内由 TiDB 保证;跨服务仍用 Seata 或 MQ

Spring / Java

  • 驱动:mysql-connector-j,JDBC URL 指向 TiDB 负载均衡地址
  • ORM:JPAMyBatis 与 MySQL 用法基本一致
  • 连接池:HikariCP
spring:
  datasource:
    url: jdbc:mysql://tidb-lb:4000/order_db?useSSL=false
    username: app
    password: ***

相关链接