Skip to content

TiDB 核心特性

分布式事务

事务模型

TiDB 支持完整的 ACID 事务,基于 Google Percolator 模型实现分布式事务处理。与传统的两阶段提交 (2PC) 不同,TiDB 的事务模型提供了更好的性能和可用性。

隔离级别

TiDB 支持四种标准的事务隔离级别:

  • READ UNCOMMITTED:允许读取未提交的数据,可能导致脏读
  • READ COMMITTED:只允许读取已提交的数据,避免脏读
  • REPEATABLE READ(默认):保证同一事务中多次读取同一数据结果一致,避免不可重复读和脏读
  • SERIALIZABLE:最高隔离级别,保证事务串行执行,避免所有并发问题

事务实现机制

  • 乐观锁:默认使用乐观锁,减少锁竞争,提高并发性能
  • 悲观锁:支持悲观锁,适合高冲突场景
  • 自动重试:事务冲突时自动重试,提高事务成功率
  • 大事务支持:优化大事务处理,减少内存占用

事务性能优化

  • 批量提交:减少网络往返,提高写入性能
  • 异步提交:降低事务提交延迟
  • 并行执行:支持事务内语句并行执行
  • 事务优先级:支持设置事务优先级,保证关键业务的执行

水平扩展

计算存储分离

TiDB 采用计算存储分离架构:

  • 计算层:TiDB Server 节点,负责 SQL 解析、优化和执行
  • 存储层:TiKV Server 节点,负责数据存储和复制
  • 管理层:PD Server 节点,负责集群调度和元数据管理

自动分片

  • Range 分片:数据按照主键范围自动分片为 Region(默认 96MB)
  • 自动拆分:Region 大小超过阈值时自动拆分
  • 自动合并:相邻小 Region 自动合并,减少元数据开销
  • 负载均衡:PD 自动调度 Region,平衡节点负载

在线扩缩容

  • 无缝扩容:添加新节点后,数据自动迁移,无需停机
  • 缩容安全:缩容前确保数据已迁移,避免数据丢失
  • 弹性伸缩:支持根据业务负载动态调整集群规模
  • 跨 AZ/Region 部署:支持跨可用区或跨地域部署,提高容灾能力

高可用性

数据多副本

  • Raft 协议:基于 Raft 共识算法实现数据复制
  • 默认 3 副本:数据默认存储 3 个副本,分布在不同节点
  • 可配置副本数:支持根据需求调整副本数量(3-5 副本)
  • 副本分布策略:支持跨 AZ/Region 分布,提高容灾能力

自动故障转移

  • 快速检测:节点故障检测时间 < 30 秒
  • 自动选主:Raft 组自动选举新 Leader
  • 服务恢复:故障恢复时间 < 30 秒
  • 无单点故障:所有组件均支持高可用部署

容灾设计

  • 同城多活:支持同城多可用区部署
  • 异地灾备:支持跨地域灾备部署
  • 跨云部署:支持混合云和多云部署
  • 业务连续性:保证 99.99% 以上的可用性

HTAP 能力

混合事务分析处理

  • TiKV + TiFlash:行存(TiKV)和列存(TiFlash)结合
  • 实时数据分析:支持事务处理的同时进行实时分析
  • 无需 ETL:分析查询直接访问实时数据,无需数据同步
  • 智能路由:优化器自动选择最优执行引擎

TiFlash 列存引擎

  • 列式存储:适合分析查询,减少 I/O 开销
  • 实时同步:与 TiKV 实时同步数据,延迟低
  • MPP 执行:支持分布式并行查询,提高分析性能
  • 向量计算:支持向量计算,加速复杂查询

HTAP 应用场景

  • 实时报表:业务数据实时生成报表
  • 实时监控:实时监控业务指标和异常
  • 实时决策:基于实时数据进行业务决策
  • 实时推荐:根据用户行为实时调整推荐策略

MySQL 兼容性

协议兼容

  • 完全兼容 MySQL 5.7/8.0 协议:应用无需修改即可连接
  • 支持 MySQL 客户端:可以使用 MySQL 命令行工具、Navicat、DBeaver 等工具连接
  • 支持 MySQL 驱动:所有 MySQL 驱动均可用于 TiDB

语法兼容

  • 支持大部分 MySQL 语法:包括 DDL、DML、DCL、TCL 等
  • 支持 MySQL 函数:包括字符串函数、数学函数、日期函数等
  • 支持 MySQL 存储过程和函数:部分限制
  • 支持 MySQL 触发器:部分限制
  • 支持 MySQL 视图:完全支持

工具兼容

  • 支持 MySQL 生态工具
    • mysqldump/mysqlpump:数据备份和恢复
    • mysqlbinlog:日志查看
    • MySQL Workbench:数据库设计和管理
    • ORM 框架:Hibernate、MyBatis、Sequelize 等

迁移便捷性

  • 零修改迁移:大部分应用无需修改代码即可迁移
  • 数据迁移工具:提供 TiDB Data Migration (DM) 工具,支持从 MySQL 迁移到 TiDB
  • 兼容性测试工具:提供 TiDB Compatibility Test Suite (CTS),检测应用兼容性

云原生设计

Kubernetes 支持

  • Operator 部署:提供 TiDB Operator,支持在 Kubernetes 上部署和管理 TiDB 集群
  • 声明式配置:通过 YAML 文件定义集群状态
  • 自动运维:自动处理扩缩容、升级、备份等操作
  • 监控集成:与 Kubernetes 监控生态集成

弹性伸缩

  • 自动扩缩容:支持根据资源使用率自动调整集群规模
  • 资源隔离:支持命名空间隔离,多租户部署
  • 按需付费:适合云环境,根据实际使用付费

云服务优化

  • TiDB Cloud:提供全托管的 TiDB 云服务
  • Serverless 模式:支持无服务器部署,自动扩缩容
  • 多云支持:支持 AWS、GCP、Azure 等主流云平台
  • 边缘部署:支持边缘计算场景

分布式架构优势

强一致性

  • 线性一致性:保证数据读取的最新版本
  • 外部一致性:保证事务的全局顺序
  • 因果一致性:保证因果关系的正确性

全局视图

  • 全局表:支持全局唯一索引
  • 分布式主键:支持 AUTO_INCREMENT 和 UUID 等主键生成方式
  • 全局时间戳:基于 PD 的 TSO(Timestamp Oracle)生成全局唯一时间戳

分布式查询优化

  • 分布式执行计划:生成高效的分布式执行计划
  • 谓词下推:将过滤条件下推到存储层,减少数据传输
  • 数据本地化:优先选择本地数据执行,减少网络开销
  • 并行执行:支持查询并行执行,提高查询性能

企业级特性

安全特性

  • SSL/TLS 加密:支持传输加密
  • 数据加密:支持存储加密
  • 细粒度权限控制:基于角色的访问控制(RBAC)
  • 审计日志:记录所有操作日志,便于审计
  • 密码策略:支持强密码策略和密码过期
  • IP 白名单:限制允许访问的 IP 地址

管理运维特性

  • 集群监控:集成 Prometheus 和 Grafana,提供丰富的监控指标
  • 告警系统:支持多种告警通道,及时发现问题
  • 日志管理:支持日志收集、分析和存储
  • 备份恢复:支持全量备份、增量备份和 PITR(精确到秒的恢复)
  • 滚动升级:支持在线滚动升级,无需停机
  • 蓝绿部署:支持蓝绿部署,降低升级风险

数据迁移和同步

  • 数据迁移工具:TiDB Data Migration (DM),支持从 MySQL 迁移到 TiDB
  • 变更数据捕获:TiCDC,支持实时数据同步到其他系统
  • 数据导入工具:TiDB Lightning,支持快速导入大量数据
  • 数据导出工具:支持导出数据到 CSV、SQL 等格式

多租户支持

  • 资源隔离:支持 CPU、内存、IO 资源隔离
  • 权限隔离:支持多租户权限隔离
  • 监控隔离:支持多租户监控视图
  • 备份隔离:支持租户级备份恢复

常见问题(FAQ)

Q1: TiDB 的分布式事务性能如何?

A1: TiDB 的分布式事务性能表现优秀:

  • 单节点写入性能可达 10 万 TPS
  • 随着节点增加,性能线性扩展
  • 支持高并发事务处理
  • 优化了大事务处理,减少内存占用

Q2: TiDB 如何处理热点问题?

A2: TiDB 提供多种机制处理热点问题:

  • 自动热点调度:PD 自动将热点 Region 分散到不同节点
  • 热点数据打散:支持将热点数据打散存储
  • 分区表:支持表分区,将数据分散到不同分区
  • 主键设计:建议使用分布式主键,如 UUID 或雪花算法,避免热点
  • 热点限流:支持热点限流,保护集群稳定

Q3: TiDB 的 HTAP 能力与传统数据仓库相比如何?

A3: TiDB 的 HTAP 能力具有以下优势:

  • 实时性:直接查询实时数据,无需 ETL
  • 成本低:无需维护两套系统(OLTP + OLAP)
  • 易用性:使用标准 SQL,无需学习新的查询语言
  • 弹性扩展:支持水平扩展,处理更大规模数据
  • 一致性:保证事务数据和分析数据的一致性

Q4: TiDB 支持哪些存储引擎?

A4: TiDB 支持多种存储引擎:

  • TiKV:默认行存引擎,适合 OLTP 场景
  • TiFlash:列式存储引擎,适合 OLAP 场景
  • TiKV Raw:Raw KV 接口,适合需要直接操作键值的场景

Q5: TiDB 如何保证数据一致性?

A5: TiDB 通过多种机制保证数据一致性:

  • Raft 协议:保证副本之间的数据一致性
  • 分布式事务:保证跨节点事务的 ACID 特性
  • TSO:提供全局唯一的时间戳,保证事务的外部一致性
  • Checksum:支持数据校验,检测数据损坏
  • 一致性快照:支持一致的备份和恢复

Q6: TiDB 支持哪些版本的 MySQL 兼容性?

A6: TiDB 兼容 MySQL 5.7 和 MySQL 8.0 协议和语法:

  • 支持大部分 MySQL 5.7 的功能和语法
  • 支持部分 MySQL 8.0 的新特性
  • 提供兼容性测试工具,检测应用兼容性

Q7: TiDB 如何处理大表查询?

A7: TiDB 针对大表查询进行了多种优化:

  • 分布式执行:将查询分解到多个节点并行执行
  • 谓词下推:将过滤条件下推到存储层,减少数据传输
  • 数据本地化:优先选择本地数据执行,减少网络开销
  • 索引优化:支持多种索引类型,如 B+ 树索引、全文索引等
  • 统计信息:维护准确的统计信息,生成最优执行计划

Q8: TiDB 支持哪些备份恢复方式?

A8: TiDB 支持多种备份恢复方式:

  • 全量备份:使用 BR 工具进行全量备份
  • 增量备份:支持基于日志的增量备份
  • PITR:支持精确到秒的点恢复
  • 逻辑备份:支持使用 mysqldump 等工具进行逻辑备份
  • 分区备份:支持分区表的备份恢复

Q9: TiDB 的监控系统包含哪些指标?

A9: TiDB 的监控系统包含丰富的指标:

  • 集群指标:节点状态、资源使用率、QPS/TPS 等
  • 存储指标:Region 数量、副本状态、IO 使用率等
  • 事务指标:事务成功率、延迟、冲突率等
  • 查询指标:查询延迟、执行计划、慢查询等
  • 网络指标:网络流量、延迟、丢包率等

Q10: TiDB 适合哪些业务场景?

A10: TiDB 适合多种业务场景:

  • 大规模 OLTP:高并发写入场景,如电商订单、金融交易
  • 实时数据分析:需要实时分析的场景,如实时报表、监控告警
  • 数据迁移整合:从 MySQL 迁移到分布式架构,多数据源整合
  • 云原生应用:容器化部署,Kubernetes 原生支持
  • HTAP 混合负载:同时需要事务处理和分析的场景