TiDB 功能概览
本文列出了 TiDB 功能在不同版本中的支持变化情况,包括长期支持版本 (LTS) 和最新的 LTS 版本之后的开发里程碑版本 (DMR)。
数据类型,函数和操作符
| 数据类型,函数,操作符 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 数值类型 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 日期和时间类型 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 字符串类型 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| JSON 类型 | Y | Y | Y | E | E | E | E | E | E | E |
| 控制流程函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 字符串函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 数值函数与操作符 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 日期和时间函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 位函数和操作符 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Cast 函数和操作符 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 加密和压缩函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 信息函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| JSON 函数 | Y | Y | Y | E | E | E | E | E | E | E |
| 聚合函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 窗口函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 其他函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 操作符 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 字符集和排序规则 1 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 用户级别锁 | Y | Y | Y | Y | N | N | N | N | N | N |
索引和约束
| 索引和约束 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 表达式索引 2 | Y | Y | Y | E | E | E | E | E | E | E |
| 列式存储 (TiFlash) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 使用 FastScan 加速 OLAP 场景下的查询 | Y | Y | E | N | N | N | N | N | N | N |
| RocksDB 引擎 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Titan 插件 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Titan Level Merge | E | E | E | E | E | E | E | E | E | E |
| 使用 bucket 提高数据扫描并发度 | E | E | E | E | N | N | N | N | N | N |
| 不可见索引 | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| 复合主键 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
CHECK 约束 | Y | N | N | N | N | N | N | N | N | N |
| 唯一约束 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 整型主键上的聚簇索引 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 复合或非整型主键上的聚簇索引 | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| 多值索引 | Y | Y | N | N | N | N | N | N | N | N |
| 外键约束 | E | E | N | N | N | N | N | N | N | N |
| TiFlash 延迟物化 | Y | Y | N | N | N | N | N | N | N | N |
SQL 语句
| SQL 语句 3 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
SELECT,INSERT,UPDATE,DELETE,REPLACE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
INSERT ON DUPLICATE KEY UPDATE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
LOAD DATA INFILE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SELECT INTO OUTFILE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
INNER JOIN, LEFT|RIGHT [OUTER] JOIN | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
UNION,UNION ALL | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXCEPT 和 INTERSECT 运算符 | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
GROUP BY,ORDER BY | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 窗口函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 公共表表达式 (CTE) | Y | Y | Y | Y | Y | Y | Y | Y | N | N |
START TRANSACTION,COMMIT,ROLLBACK | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN ANALYZE | Y | Y | Y | Y | Y | Y | Y | Y | Y | |
| 用户自定义变量 | E | E | E | E | E | E | E | E | E | E |
BATCH [ON COLUMN] LIMIT INTEGER DELETE | Y | Y | Y | Y | N | N | N | N | N | N |
BATCH [ON COLUMN] LIMIT INTEGER INSERT/UPDATE/REPLACE | Y | Y | Y | N | N | N | N | N | N | N |
ALTER TABLE ... COMPACT | Y | Y | Y | E | N | N | N | N | N | N |
| 表级锁 (Table Lock) | E | E | E | E | E | E | E | E | E | E |
| 物化列式存储的查询结果 | Y | Y | E | N | N | N | N | N | N | N |
高级 SQL 功能
| 高级 SQL 功能 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| Prepare 语句执行计划缓存 | Y | Y | Y | Y | Y | Y | E | E | E | E |
| 非 Prepare 语句执行计划缓存 | Y | E | N | N | N | N | N | N | N | N |
| 执行计划管理 (SPM) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 根据历史执行计划创建绑定 | Y | Y | E | N | N | N | N | N | N | N |
| 下推计算结果缓存 (Coprocessor Cache) | Y | Y | Y | Y | Y | Y | Y | Y | Y | E |
| Stale Read | Y | Y | Y | Y | Y | Y | Y | Y | N | N |
| Follower Read | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
通过系统变量 tidb_snapshot 读取历史数据 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Optimizer hints | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| MPP 执行引擎 | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| MPP 执行引擎 - compression exchange | Y | Y | N | N | N | N | N | N | N | N |
| TiFlash Pipeline 执行模型 | Y | N | N | N | N | N | N | N | N | N |
| TiFlash 副本选择策略 | Y | N | N | N | N | N | N | N | N | N |
| 索引合并 | Y | Y | Y | Y | Y | E | E | E | E | E |
| 基于 SQL 的数据放置规则 | Y | Y | Y | Y | E | E | N | N | N | N |
| Cascades Planner | E | E | E | E | E | E | E | E | E | E |
| Runtime Filter | Y | N | N | N | N | N | N | N | N | N |
数据定义语言 (DDL)
| 数据定义语言 (DDL) | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
CREATE,DROP,ALTER,RENAME,TRUNCATE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 生成列 | Y | Y | E | E | E | E | E | E | E | E |
| 视图 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 序列 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
AUTO_INCREMENT 列 | Y | Y | Y4 | Y | Y | Y | Y | Y | Y | Y |
AUTO_RANDOM 列 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| TTL (Time to Live) | Y | Y | E | N | N | N | N | N | N | N |
| DDL 算法断言 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 在单条语句中添加多列 | Y | Y | Y | E | E | E | E | E | E | E |
| 更改列类型 | Y | Y | Y | Y | Y | Y | Y | Y | N | N |
| 临时表 | Y | Y | Y | Y | Y | Y | N | N | N | N |
| 并行 DDL | Y | Y | Y | N | N | N | N | N | N | N |
| 添加索引加速 | Y | Y | Y | N | N | N | N | N | N | N |
| 元数据锁 | Y | Y | Y | N | N | N | N | N | N | N |
FLASHBACK CLUSTER | Y | Y | Y | N | N | N | N | N | N | N |
| 暂停/恢复 DDL | Y | N | N | N | N | N | N | N | N | N |
事务
| 事务 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| Async commit | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| 1PC | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
| 大事务 (10 GB) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 悲观事务 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 乐观事务 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 可重复读隔离(快照隔离) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 读已提交隔离 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
分区
| 分区 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| Range 分区 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Hash 分区 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Key 分区 | Y | Y | N | N | N | N | N | N | N | N |
| List 分区 | Y | Y | Y | Y | E | E | E | E | E | N |
| List COLUMNS 分区 | Y | Y | Y | Y | E | E | E | E | E | N |
| List 和 List COLUMNS 分区表的默认分区 | Y | N | N | N | N | N | N | N | N | N |
EXCHANGE PARTITION | Y | Y | Y | E | E | E | E | E | E | N |
REORGANIZE PARTITION | Y | Y | N | N | N | N | N | N | N | N |
COALESCE PARTITION | Y | Y | N | N | N | N | N | N | N | N |
| 动态裁剪 | Y | Y | Y | Y | E | E | E | E | N | N |
| Range COLUMNS 分区 | Y | Y | Y | N | N | N | N | N | N | N |
| Range INTERVAL 分区 | Y | Y | E | N | N | N | N | N | N | N |
| 分区表转换为非分区表 | Y | N | N | N | N | N | N | N | N | N |
| 对现有表进行分区 | Y | N | N | N | N | N | N | N | N | N |
统计信息
| 统计信息 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| CM-Sketch | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | Y | Y | Y | Y |
| 直方图 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 扩展统计信息(多列) | E | E | E | E | E | E | E | E | E | N |
| 统计反馈 | N | N | N | 已废弃 | 已废弃 | E | E | E | E | E |
| 统计信息自动更新 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 动态裁剪 | Y | Y | Y | Y | E | E | E | E | N | N |
| 收集部分列的统计信息 | E | E | E | E | E | N | N | N | N | N |
| 限制统计信息的内存使用量 | E | E | E | E | N | N | N | N | N | N |
| 随机采样约 10000 行数据来快速构建统计信息 | 已废弃 | E | E | E | E | E | E | E | E | E |
| 锁定统计信息 | Y | E | E | N | N | N | N | N | N | N |
| 轻量级统计信息初始化 | Y | E | N | N | N | N | N | N | N | N |
| 显示统计信息收集的进度 | Y | N | N | N | N | N | N | N | N | N |
安全
| 安全 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 传输层加密 (TLS) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 静态加密 (TDE) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 基于角色的访问控制 (RBAC) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 证书鉴权 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
caching_sha2_password 认证 | Y | Y | Y | Y | Y | Y | Y | N | N | N |
tidb_sm3_password 认证 | Y | Y | Y | N | N | N | N | N | N | N |
tidb_auth_token 认证 | Y | Y | Y | N | N | N | N | N | N | N |
authentication_ldap_sasl 认证 | Y | Y | N | N | N | N | N | N | N | N |
authentication_ldap_simple 认证 | Y | Y | N | N | N | N | N | N | N | N |
| 密码管理 | Y | Y | Y | N | N | N | N | N | N | N |
与 MySQL 兼容的 GRANT 权限管理 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 动态权限 | Y | Y | Y | Y | Y | Y | Y | Y | N | N |
| 安全增强模式 | Y | Y | Y | Y | Y | Y | Y | Y | N | N |
| 日志脱敏 | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
数据导入和导出
| 数据导入和导出 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 快速导入 (TiDB Lightning) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
快速导入 (IMPORT INTO) | Y | N | N | N | N | N | N | N | N | N |
| mydumper 逻辑导出 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 |
| Dumpling 逻辑导出 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
事务 LOAD DATA 5 | Y | Y | Y | Y | Y | Y | Y | Y | Y | N 6 |
| 数据迁移工具 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| TiDB Binlog 7 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Change data capture (CDC) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| TiCDC 支持保存数据到存储服务 (Amazon S3/GCS/Azure Blob Storage/NFS) | Y | Y | E | N | N | N | N | N | N | N |
| TiCDC 支持在两个 TiDB 集群之间进行双向复制 | Y | Y | Y | N | N | N | N | N | N | N |
| TiCDC OpenAPI v2 | Y | Y | N | N | N | N | N | N | N | N |
管理,可视化和工具
| 管理,可视化和工具 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 | 5.0 | 4.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| TiDB Dashboard 图形化展示 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| TiDB Dashboard 持续性能分析功能 | Y | Y | Y | Y | E | E | N | N | N | N |
| TiDB Dashboard Top SQL 功能 | Y | Y | Y | Y | E | N | N | N | N | N |
| TiDB Dashboard SQL 诊断功能 | Y | Y | Y | E | E | E | E | E | E | E |
| TiDB Dashboard 集群诊断功能 | Y | Y | Y | E | E | E | E | E | E | E |
| Grafana 中的 TiKV-FastTune 面板 | E | E | E | E | E | E | E | E | E | E |
| Information schema | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Metrics schema | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Statements summary tables | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Statements summary tables - 持久化 statements summary | E | E | N | N | N | N | N | N | N | N |
| 慢查询日志 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| TiUP 部署 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Kubernetes operator | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 内置物理备份 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| Global Kill | Y | Y | Y | Y | E | E | E | E | E | E |
| Lock View | Y | Y | Y | Y | Y | Y | Y | E | E | E |
SHOW CONFIG | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SET CONFIG | Y | Y | Y | Y | E | E | E | E | E | E |
| DM WebUI | E | E | E | E | N | N | N | N | N | N |
| 前台限流 | Y | Y | Y | E | N | N | N | N | N | N |
| 后台限流 | E | E | E | N | N | N | N | N | N | N |
| 基于 EBS 的备份和恢复 | Y | Y | Y | N | N | N | N | N | N | N |
| PITR | Y | Y | Y | N | N | N | N | N | N | N |
| 全局内存控制 | Y | Y | Y | N | N | N | N | N | N | N |
| RawKV 跨集群复制 | E | E | E | N | N | N | N | N | N | N |
| Green GC | E | E | E | E | E | E | E | E | E | N |
| 资源管控 (Resource Control) | Y | Y | N | N | N | N | N | N | N | N |
| Runaway Queries 自动管理 | E | N | N | N | N | N | N | N | N | N |
| 后台任务资源管控 | E | N | N | N | N | N | N | N | N | N |
| TiFlash 存算分离架构与 S3 支持 | Y | E | N | N | N | N | N | N | N | N |
| 选择执行分布式执行框架任务的 TiDB 节点 | Y | N | N | N | N | N | N | N | N | N |
- TiDB 误将 latin1 处理为 utf8 的子集。见 TiDB #18955。↩
- 从 v6.5.0 起,系统变量
tidb_allow_function_for_expression_index所列出的函数已通过表达式索引的测试,可以在生产环境中创建并使用,未来版本会持续增加。对于没有列出的函数,则不建议在生产环境中使用相应的表达式索引。详情请参考表达式索引。↩ - TiDB 支持的完整 SQL 列表,见语句参考。↩
- 从 TiDB v6.4.0 开始,支持高性能、全局单调递增的
AUTO_INCREMENT列。↩ - 从 v7.5.0 开始,不再提供 TiDB Binlog 数据同步功能的技术支持,强烈建议使用 TiCDC 实现高效稳定的数据同步。尽管 TiDB Binlog 在 v7.5.0 仍支持 Point-in-Time Recovery (PITR) 场景,但是该组件在未来 LTS 版本中将被完全废弃,推荐使用 PITR 替代。↩
- 对于 TiDB v4.0,事务
LOAD DATA不保证原子性。↩ - 从 TiDB v7.0.0 开始新增的参数
FIELDS DEFINED NULL BY以及新增支持从 S3 和 GCS 导入数据,均为实验特性。↩