TiDB - 分布式 NewSQL 数据库
TiDB 是一个开源的分布式 NewSQL 数据库,支持水平扩展、强一致性事务和 MySQL 协议兼容。
目录结构
| 模块 | 内容 |
|---|---|
| 部署 | TiUP 部署、Docker 部署 |
| 建表设计 | 主键设计、索引、分区表 |
| 查询优化 | 执行计划、热点问题、Hints |
| HTAP | TiFlash、混合负载处理 |
| FAQ | 常见问题 |
| 面试题 | 核心面试考点 |
核心特性
| 特性 | 说明 |
|---|---|
| 水平扩展 | 自动分片,理论无上限 |
| 强一致性 | 分布式事务,ACID |
| MySQL 兼容 | 兼容 MySQL 5.7 协议 |
| HTAP | TiFlash 列存,支持混合负载 |
| 自动调度 | PD 智能调度,负载均衡 |
架构概览
┌─────────────────────────────────────┐
│ 客户端应用 │
└──────────────┬──────────────────────┘
│ MySQL协议
┌──────────────▼──────────────────────┐
│ TiDB Server (无状态SQL层) │
└──────────────┬──────────────────────┘
│
┌───────────┼───────────┐
│ │ │
┌──▼──┐ ┌────▼────┐ ┌──▼──┐
│ PD │ │ TiKV │ │TiFlash│
│调度层│ │ KV存储 │ │列存储 │
└─────┘ └─────────┘ └──────┘组件说明
| 组件 | 作用 |
|---|---|
| TiDB Server | 无状态 SQL 层,处理请求 |
| PD | 元信息管理、时间戳分配、调度 |
| TiKV | 行式存储,Raft 副本 |
| TiFlash | 列式存储,OLAP 加速 |
快速部署
bash
# 安装 TiUP
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
# 启动测试集群
tiup playground
# 连接
mysql -h 127.0.0.1 -P 4000 -u root与 MySQL 对比
| 特性 | TiDB | MySQL |
|---|---|---|
| 扩展性 | 水平扩展 | 垂直扩展 |
| 高可用 | 原生支持 | 需额外方案 |
| 事务 | 分布式 | 单机 |
| 容量 | PB 级 | TB 级 |
| 分片 | 自动 | 手动分库分表 |
