TiDB 是一款开源的分布式关系型数据库,它巧妙地融合了传统关系型数据库的优势(如 SQL 支持、ACID 事务)和 NoSQL 数据库的可扩展性。下面这个表格汇总了它的核心构成部分,能帮你快速建立整体认知。
核心组件 | 核心职责 | 一句话解读 |
TiDB Server | 负责接收 SQL 请求,处理 SQL 相关的逻辑,是无状态的计算层。 | 接收 SQL 查询,进行解析、优化,生成分布式执行计划,并将请求转发给存储节点。它类似于“大脑”,本身不存储数据,可以水平扩展 。 |
PD (Placement Driver) Server | 整个集群的元信息管理模块和调度中心。 | 存储集群的元信息(如数据分布),负责全局 ID 生成、计时器、数据调度和负载均衡。它是集群的“总调度中心”,确保系统有序高效运行 。 |
TiKV Server | 分布式的 Key-Value 存储引擎,负责数据的持久化存储。 | 以 Region 为单位存储数据,并通过 Raft 协议实现数据的多副本复制,保证数据的强一致性和高可用性。它是可靠的“仓库” 。 |
TiFlash | 列式存储引擎,是 TiDB 实现 HTAP 的关键组件。 | 实时从 TiKV 同步行存数据并转换为列存格式,专为复杂的分析查询设计。使用它可以实现行存列存共存,一份数据同时处理 OLTP 和 OLAP 场景 。 |
工作原理与流程
TiDB 的工作流程可以概括为以下几个关键步骤,下图直观地展示了一个 SQL 查询请求从发出到返回结果的完整路径,以及各核心组件在其中扮演的角色:
简单来说:你可以把 TiDB 集群想象成一个高效协作的团队。当 SQL 请求(如 SELECt * FROM users WHERe id = 1;)到来时:
- TiDB Server像团队的“翻译官和指挥官”,负责解析你的 SQL 指令。
- 它需要去 PD Server这个“全局信息管理员”那里查一下,id=1这条数据具体存储在哪个“货架”(TiKV 节点)上。
- 拿到位置信息后,TiDB Server会向对应的 TiKV Server“仓库管理员”下达指令,精准获取数据。
- 如果是一个复杂的分析查询,TiDB Server可能会选择将任务交给更擅长批量数据处理的“分析专家” TiFlash来执行。
- 最后,TiDB Server将获取的结果整理好,返回给客户端。
整个过程对应用是透明的,你仍然使用标准的 MySQL 协议和语法,但底层数据库已经具备了无限水平扩展和高可用的能力 。
快速入门指南
我们通过一个简单的例子,帮你快速上手 TiDB。
1. 部署体验
对于初学者,最快的方式是使用 TiDB Cloud(数据库即服务,DBaaS),它提供了免费的试用集群 。如果想在本地体验,可以使用 TiUP这个强大的运维工具一键部署本地测试环境 。
# 使用 TiUP 快速部署本地测试集群(单机版)tiup playground2. 连接数据库
TiDB 高度兼容 MySQL 协议。部署成功后,你可以使用任何熟悉的 MySQL 客户端(如 MySQL 命令行客户端、Navicat、DBeaver 等)连接它,就像连接一个普通的 MySQL 数据库一样 。
mysql -h 127.0.0.1 -P 4000 -u root- -h参数指定 TiDB 服务器地址(本地为 127.0.0.1)。
- -P参数指定端口,TiDB 默认使用 4000端口 。
- -u参数指定用户名。
3. 基本操作示例
连接成功后,你就可以使用熟悉的 SQL 语句进行操作了。
-- 创建一个数据库CREATE DATAbase my_test_db;USE my_test_db;-- 创建一张表CREATE TABLE users ( id BIGINT AUTO_RANDOM PRIMARY KEY, name VARCHAr(100) NOT NULL, email VARCHAr(255));-- 插入数据INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com');-- 查询数据SELECt * FROM users;-- 进行一个事务操作BEGIN;UPDATE users SET email = 'new_email@example.com' WHERe name = '李四';COMMIT;从上面的操作可以看出,对于开发者和使用者来说,操作 TiDB 和操作 MySQL 几乎没有区别,学习门槛非常低 。
核心特性解读
理解 TiDB 的以下几个关键特性,能帮助你更好地认识其价值。
- 水平扩展(Horizontal Scalability)
- 这是 TiDB 最核心的能力。当业务增长导致存储空间或计算能力不足时,传统数据库(如 MySQL)通常需要进行复杂的分库分表。而 TiDB 可以通过简单地增加 TiKV 或 TiDB Server 节点来线性地提升整体的存储容量和处理能力,整个过程对业务透明,无需停机 。
- 高可用(High Availability)
- TiDB 默认采用 多副本机制(通常为 3 副本)。你的数据会同时存储在多个 TiKV 节点上,并通过 Raft 共识算法确保副本间的一致性。即使某个节点发生故障,只要大多数副本存活,集群就能自动进行故障转移,继续提供服务,实现 RPO(恢复点目标)= 0,RTO(恢复时间目标)≈ 30秒的金融级高可用 。
- 实时 HTAP(Hybrid Transactional/Analytical Processing)
- 传统的做法是,在线交易数据库(OLTP)的数据需要通过 ETL 工具定期同步到数据仓库(OLAP)中进行分析,这会导致数据延迟。TiDB 通过引入 TiFlash列式存储引擎,使得一份数据同时支持两类处理。行存引擎 TiKV 高效处理实时交易,列存引擎 TiFlash 高效处理复杂分析查询,并且数据是实时同步的,实现了真正的混合负载 。
总结
总而言之,TiDB 是一个强大的分布式 SQL 数据库,它通过计算、存储、调度分离的架构,实现了水平扩展、高可用和实时 HTAP等关键能力。其高度兼容 MySQL的特性使得迁移和使用成本大大降低。

