TiDB简介 #

一、什么是TiDB #

1.1 数据库演进历程 #

text
传统数据库时代
├── 单机数据库 (MySQL, PostgreSQL)
│   └── 问题: 扩展困难, 单点故障
│
├── 中间件分库分表
│   └── 问题: 运维复杂, 跨库事务难
│
└── NoSQL时代
    └── 问题: 不支持SQL, 弱事务
        ↓
NewSQL时代
└── TiDB: 分布式 + SQL + 事务

1.2 TiDB定义 #

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款融合了传统关系型数据库和 NoSQL 数据库特性的新型分布式数据库。

特性 说明
分布式 水平扩展,无限扩容
关系型 完整的SQL支持
事务 ACID事务保证
MySQL兼容 高度兼容MySQL协议
开源 Apache 2.0 协议

1.3 TiDB定位 #

text
┌─────────────────────────────────────────────────────┐
│                    TiDB 定位                        │
├─────────────────────────────────────────────────────┤
│  ✓ 关系型数据库 - 完整SQL支持                       │
│  ✓ 分布式数据库 - 水平扩展能力                      │
│  ✓ NewSQL数据库 - 分布式+SQL+事务                   │
│  ✓ HTAP数据库 - 混合事务分析处理                    │
└─────────────────────────────────────────────────────┘

二、TiDB发展历史 #

2.1 诞生背景 #

text
2012年  Google Spanner论文发布
    ↓
2015年  PingCAP成立,开始研发TiDB
    ↓
2016年  TiDB 1.0 GA发布
    ↓
2017年  TiDB 2.0 发布,性能大幅提升
    ↓
2019年  TiDB 3.0 发布,支持HTAP
    ↓
2020年  TiDB 4.0 发布,企业级特性
    ↓
2021年  TiDB 5.0 发布,MPP架构
    ↓
2022年  TiDB 6.0 发布,多租户
    ↓
2023年  TiDB 7.0 发布,增强HTAP
    ↓
至今    持续迭代演进

2.2 版本特性 #

版本 年份 主要特性
1.0 2016 基础分布式事务
2.0 2017 优化器增强,性能提升
3.0 2019 TiFlash,HTAP支持
4.0 2020 Raft Learner,备份恢复
5.0 2021 MPP引擎,列存优化
6.0 2022 资源管控,放置规则
7.0 2023 增强HTAP,多租户

2.3 开源生态 #

项目 说明
TiDB SQL层,协议兼容
TiKV 存储层,分布式KV
PD 调度器,元数据管理
TiFlash 列存引擎,分析加速
TiCDC 数据同步工具
TiDB Operator Kubernetes部署

三、TiDB核心特点 #

3.1 水平扩展 #

sql
-- 传统数据库扩展困难
-- 单机MySQL: 数据量受限于单机存储

-- TiDB 水平扩展
-- 添加节点即可线性扩展容量和性能
text
扩展前:
┌─────────────────┐
│  TiDB Cluster   │
│  3 TiKV Nodes   │
│  Capacity: 3TB  │
└─────────────────┘

扩展后:
┌─────────────────────────────┐
│      TiDB Cluster           │
│  6 TiKV Nodes               │
│  Capacity: 6TB              │
│  Performance: 2x            │
└─────────────────────────────┘

3.2 高可用架构 #

text
┌─────────────────────────────────────────────────┐
│                   高可用设计                     │
├─────────────────────────────────────────────────┤
│                                                 │
│   ┌──────┐  ┌──────┐  ┌──────┐                │
│   │TiDB 1│  │TiDB 2│  │TiDB 3│   无状态       │
│   └──────┘  └──────┘  └──────┘                │
│       │         │         │                    │
│       └─────────┼─────────┘                    │
│                 │                              │
│   ┌──────┐  ┌──────┐  ┌──────┐                │
│   │ PD 1 │  │ PD 2 │  │ PD 3 │   Raft选举     │
│   └──────┘  └──────┘  └──────┘                │
│                 │                              │
│   ┌──────┐  ┌──────┐  ┌──────┐                │
│   │TiKV 1│  │TiKV 2│  │TiKV 3│   Raft复制     │
│   └──────┘  └──────┘  └──────┘                │
│                                                 │
└─────────────────────────────────────────────────┘

3.3 ACID事务 #

sql
-- TiDB 完整支持 ACID 事务
BEGIN;

-- 原子性: 全部成功或全部失败
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

-- 一致性: 数据约束保证
-- 隔离性: 支持多种隔离级别
-- 持久性: Raft 日志持久化

COMMIT;

3.4 MySQL兼容 #

sql
-- TiDB 高度兼容 MySQL 协议

-- 连接方式与 MySQL 相同
mysql -h 127.0.0.1 -P 4000 -u root -p

-- 标准 SQL 语法
SELECT * FROM users WHERE id = 1;

-- JOIN 查询
SELECT u.name, o.order_no
FROM users u
JOIN orders o ON u.id = o.user_id;

-- 聚合函数
SELECT COUNT(*), AVG(amount) FROM orders;

3.5 HTAP能力 #

text
┌─────────────────────────────────────────────────────┐
│                    HTAP 架构                        │
├─────────────────────────────────────────────────────┤
│                                                     │
│    应用层                                           │
│       │                                             │
│       ▼                                             │
│   ┌───────┐                                         │
│   │ TiDB  │  SQL 解析、优化、执行                   │
│   └───────┘                                         │
│       │                                             │
│       ├──────────────────┐                          │
│       ▼                  ▼                          │
│   ┌───────┐         ┌──────────┐                   │
│   │ TiKV  │         │ TiFlash  │                   │
│   │ 行存  │         │  列存    │                   │
│   │ OLTP  │         │  OLAP    │                   │
│   └───────┘         └──────────┘                   │
│                                                     │
│   实时同步,一套系统同时支持事务和分析              │
└─────────────────────────────────────────────────────┘

四、TiDB应用场景 #

4.1 适用场景 #

1. 海量数据存储

sql
-- 单表数据量超过 MySQL 单机限制
-- TiDB 支持单表 PB 级数据

CREATE TABLE logs (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT,
    action VARCHAR(100),
    created_at TIMESTAMP,
    details JSON
) PARTITION BY RANGE (YEAR(created_at)) (
    PARTITION p2023 VALUES LESS THAN (2024),
    PARTITION p2024 VALUES LESS THAN (2025),
    PARTITION p2025 VALUES LESS THAN (2026)
);

2. 高并发写入

text
写入场景:
├── 订单系统
├── 日志采集
├── IoT数据
└── 消息存储

3. 实时分析

sql
-- 边写入边分析
-- TiFlash 提供列存加速

SELECT 
    DATE_FORMAT(created_at, '%Y-%m-%d') AS day,
    COUNT(*) AS order_count,
    SUM(amount) AS total_amount
FROM orders
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY day
ORDER BY day;

4. 金融级事务

sql
-- 强一致性事务保证
-- 适合金融、支付场景

BEGIN;
-- 转账操作
UPDATE accounts SET balance = balance - 1000 WHERE id = 1;
UPDATE accounts SET balance = balance + 1000 WHERE id = 2;
COMMIT;

4.2 行业案例 #

行业 客户 应用场景
金融 京东金融 支付清算系统
电商 小红书 商品、用户数据
游戏 原神 游戏数据存储
物联网 旷视 设备数据采集
内容 知乎 内容存储检索

4.3 不适用场景 #

场景 原因 建议
小数据量 杀鸡用牛刀 使用 MySQL
极低延迟 分布式有网络开销 使用内存数据库
复杂存储过程 存储过程支持有限 应用层实现

五、TiDB vs 其他数据库 #

5.1 与MySQL对比 #

特性 MySQL TiDB
扩展方式 垂直扩展 水平扩展
数据量 单机限制 PB级
高可用 主从复制 Raft多副本
事务 支持 分布式事务
学习成本 中等
运维成本 中等

5.2 与MongoDB对比 #

特性 MongoDB TiDB
数据模型 文档型 关系型
SQL支持 有限 完整
事务 4.0+支持 原生支持
Join 有限支持 完整支持
Schema 灵活 固定

5.3 与CockroachDB对比 #

特性 CockroachDB TiDB
协议兼容 PostgreSQL MySQL
存储引擎 RocksDB TiKV
分析能力 较弱 TiFlash HTAP
社区活跃度 活跃 活跃
开源协议 BSL Apache 2.0

六、TiDB架构概览 #

6.1 整体架构 #

text
┌─────────────────────────────────────────────────────────────┐
│                        应用层                                │
│         MySQL Client / ORM / Application                    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                      TiDB Server                            │
│    SQL解析 → 优化器 → 执行器 → 分布式执行                    │
│                    (无状态,可水平扩展)                      │
└─────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│   TiDB Server   │ │   TiDB Server   │ │   TiDB Server   │
└─────────────────┘ └─────────────────┘ └─────────────────┘
              │               │               │
              └───────────────┼───────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    Placement Driver                         │
│              调度器 / 元数据管理 / 时间戳分配                │
└─────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│     TiKV        │ │     TiKV        │ │     TiKV        │
│   行存引擎      │ │   行存引擎      │ │   行存引擎      │
│   OLTP         │ │   OLTP         │ │   OLTP         │
└─────────────────┘ └─────────────────┘ └─────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                      TiFlash                                │
│              列存引擎 / OLAP加速 / 实时同步                  │
└─────────────────────────────────────────────────────────────┘

6.2 组件职责 #

组件 职责
TiDB Server SQL解析、优化、执行
TiKV 数据存储、分布式事务
PD 调度、元数据、时间戳
TiFlash 列存、分析加速

七、为什么学习TiDB #

7.1 市场需求 #

text
分布式数据库技能需求增长趋势
┌─────────────────────────────────┐
│ 2024年                          │
│ TiDB     ████████████  增长40%  │
│ OceanBase ████████     增长35%  │
│ PolarDB  ██████       增长25%   │
└─────────────────────────────────┘

7.2 学习价值 #

1. 技能成长

text
TiDB学习路径
├── 分布式系统原理
│   ├── Raft共识算法
│   ├── 分布式事务
│   └── 分布式存储
├── 数据库内核
│   ├── SQL优化器
│   ├── 执行引擎
│   └── 存储引擎
└── 运维实践
    ├── 集群部署
    ├── 性能调优
    └── 故障排查

2. 职业发展

职位 TiDB技能要求
后端开发 熟练使用
DBA 精通运维
架构师 精通设计
数据工程师 熟练ETL

7.3 学习路线 #

text
入门阶段 (1-2周)
├── TiDB简介
├── 安装部署
├── 基础SQL
└── 架构理解

进阶阶段 (2-4周)
├── 分布式事务
├── 索引优化
├── 数据迁移
└── 监控运维

高级阶段 (1-3月)
├── 性能调优
├── 高可用设计
├── 源码理解
└── 故障排查

八、学习资源 #

8.1 官方资源 #

资源 地址
官方文档 https://docs.pingcap.com/zh/tidb/stable
官方网站 https://pingcap.com/
GitHub https://github.com/pingcap/tidb
AskTUG社区 https://asktug.com/

8.2 学习建议 #

  1. 动手实践:搭建测试集群,多写SQL
  2. 理解原理:学习分布式系统基础
  3. 阅读源码:深入理解实现细节
  4. 参与社区:提问、回答、贡献代码

九、总结 #

TiDB核心优势:

优势 说明
水平扩展 线性扩展,无限容量
高可用 Raft协议,自动故障恢复
MySQL兼容 无缝迁移,学习成本低
HTAP 一套系统,事务分析兼得
开源 Apache 2.0,社区活跃

下一步,让我们开始安装部署TiDB!

最后更新:2026-03-27