TiDB 功能概览
本文列出了 TiDB 功能在不同版本中的支持变化情况,包括长期支持版本 (LTS) 和最新的 LTS 版本之后的开发里程碑版本 (DMR)。
数据类型,函数和操作符
数据类型,函数,操作符 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
数值类型 | 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 |
JSON 类型 | Y | Y | Y | Y | Y | Y | 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 | 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 | Y | Y | Y |
JSON 函数 | Y | Y | Y | Y | Y | Y | 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 |
字符集和排序规则 1 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
用户级别锁 | Y | Y | Y | Y | Y | Y | Y | N | N | N | N |
索引和约束
索引和约束 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
表达式索引 2 | Y | Y | Y | Y | Y | Y | E | E | E | E | E |
列式存储 (TiFlash) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
使用 FastScan 加速 OLAP 场景下的查询 | Y | Y | Y | Y | Y | E | N | N | N | N | N |
RocksDB 引擎 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Titan 插件 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Titan Level Merge | E | E | E | E | E | E | E | E | E | E | E |
使用 bucket 提高数据扫描并发度 | E | E | E | E | E | E | E | 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 |
CHECK 约束 | Y | Y | Y | Y | 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 | Y | Y | Y | Y |
多值索引 | Y | Y | Y | Y | Y | N | N | N | N | N | N |
外键约束 | E | E | E | E | E | N | N | N | N | N | N |
TiFlash 延迟物化 | Y | Y | Y | Y | Y | N | N | N | N | N | N |
全局索引 (Global Index) | E | N | N | N | N | N | N | N | N | N | N |
SQL 语句
SQL 语句 3 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
SELECT ,INSERT ,UPDATE ,DELETE ,REPLACE | Y | 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 | Y |
LOAD DATA INFILE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SELECT INTO OUTFILE | Y | 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 | Y |
UNION ,UNION ALL | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXCEPT 和 INTERSECT 运算符 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
GROUP BY ,ORDER BY | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
GROUP BY 修饰符 | Y | Y | Y | Y | N | N | N | N | N | N | N |
窗口函数 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
公共表表达式 (CTE) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
START TRANSACTION ,COMMIT ,ROLLBACK | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN ANALYZE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
用户自定义变量 | E | E | E | E | E | E | E | E | E | E | E |
BATCH [ON COLUMN] LIMIT INTEGER DELETE | Y | Y | Y | Y | Y | Y | Y | N | N | N | N |
BATCH [ON COLUMN] LIMIT INTEGER INSERT/UPDATE/REPLACE | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
ALTER TABLE ... COMPACT | Y | Y | Y | Y | Y | Y | E | N | N | N | N |
表级锁 (Table Lock) | E | E | E | E | E | E | E | E | E | E | E |
物化列式存储的查询结果 | Y | Y | Y | Y | Y | E | N | N | N | N | N |
高级 SQL 功能
高级 SQL 功能 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
Prepare 语句执行计划缓存 | Y | Y | Y | Y | Y | Y | Y | Y | Y | E | E |
非 Prepare 语句执行计划缓存 | Y | Y | Y | Y | E | N | N | N | N | N | N |
执行计划绑定 (SQL Binding) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
跨数据库执行计划绑定 (Cross-DB Binding) | Y | Y | Y | N | N | N | N | N | N | N | N |
根据历史执行计划创建绑定 | Y | Y | Y | Y | Y | E | N | N | N | N | N |
下推计算结果缓存 (Coprocessor Cache) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Stale Read | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Follower Read | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
通过系统变量 tidb_snapshot 读取历史数据 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Optimizer hints | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
MPP 执行引擎 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
MPP 执行引擎 - compression exchange | Y | Y | Y | Y | Y | N | N | N | N | N | N |
TiFlash Pipeline 执行模型 | Y | Y | Y | Y | N | N | N | N | N | N | N |
TiFlash 副本选择策略 | Y | Y | Y | Y | N | N | N | N | N | N | N |
索引合并 | Y | Y | Y | Y | Y | Y | Y | Y | E | E | E |
基于 SQL 的数据放置规则 | Y | Y | Y | Y | Y | Y | Y | E | E | N | N |
Cascades Planner | E | E | E | E | E | E | E | E | E | E | E |
Runtime Filter | Y | Y | Y | Y | N | N | N | N | N | N | N |
数据定义语言 (DDL)
数据定义语言 (DDL) | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
CREATE ,DROP ,ALTER ,RENAME ,TRUNCATE | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
生成列 | Y | Y | Y | Y | Y | 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 |
AUTO_INCREMENT 列 | Y | Y | Y | Y | Y | Y4 | Y | Y | Y | Y | Y |
AUTO_RANDOM 列 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TTL (Time to Live) | Y | Y | Y | Y | Y | E | N | N | N | N | N |
DDL 算法断言 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
在单条语句中添加多列 | Y | Y | Y | Y | Y | Y | 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 | N | N |
并行 DDL | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
添加索引加速 | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
元数据锁 | Y | Y | Y | Y | Y | N | N | N | N | N | |
FLASHBACK CLUSTER | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
暂停/恢复 DDL | Y | Y | Y | Y | N | N | N | N | N | N | N |
TiDB 加速建表 | E | E | E | N | N | N | N | N | N | N | N |
设置 BDR Role 用于 TiCDC 双向同步时同步 DDL | Y | E | E | N | N | N | N | N | N | N | N |
事务
事务 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
Async commit | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
1PC | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
大事务 (1 TiB) | 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 | Y | Y | Y | Y | Y |
自动终止长时间未提交的空闲事务 | Y | Y | Y | N | N | N | N | N | N | N | N |
批量 DML 语句的执行方式 (tidb_dml_type = "bulk" ) | E | E | E | N | N | N | N | N | N | N | N |
分区
分区 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
Range 分区 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Hash 分区 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Key 分区 | Y | Y | Y | Y | Y | N | N | N | N | N | N |
List 分区 | Y | Y | Y | Y | Y | Y | Y | E | E | E | E |
List COLUMNS 分区 | Y | Y | Y | Y | Y | Y | Y | E | E | E | E |
List 和 List COLUMNS 分区表的默认分区 | Y | Y | Y | Y | N | N | N | N | N | N | N |
EXCHANGE PARTITION | Y | Y | Y | Y | Y | Y | E | E | E | E | E |
REORGANIZE PARTITION | Y | Y | Y | Y | Y | N | N | N | N | N | N |
COALESCE PARTITION | Y | Y | Y | Y | Y | N | N | N | N | N | N |
动态裁剪 | Y | Y | Y | Y | Y | Y | Y | E | E | E | E |
Range COLUMNS 分区 | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
Range INTERVAL 分区 | Y | Y | Y | Y | Y | E | N | N | N | N | N |
分区表转换为非分区表 | Y | Y | Y | Y | N | N | N | N | N | N | N |
对现有表进行分区 | Y | Y | Y | Y | N | N | N | N | N | N | N |
统计信息
统计信息 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
CM-Sketch | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | 默认关闭 | Y | Y |
直方图 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
扩展统计信息 | E | E | E | E | E | E | E | E | E | E | E |
统计反馈 | N | N | N | N | N | N | 已废弃 | 已废弃 | E | E | E |
统计信息自动更新 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
动态裁剪 | Y | Y | Y | Y | Y | Y | Y | E | E | E | E |
收集部分列的统计信息 | Y | E | E | E | E | E | E | E | N | N | N |
限制统计信息的内存使用量 | E | E | E | E | E | E | E | N | N | N | N |
随机采样约 10000 行数据来快速构建统计信息 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | E | E | E | E | E | E | E |
锁定统计信息 | Y | Y | Y | Y | E | E | N | N | N | N | N |
轻量级统计信息初始化 | Y | Y | Y | Y | E | N | N | N | N | N | N |
显示统计信息收集的进度 | Y | Y | Y | Y | N | N | N | N | N | N | N |
安全
安全 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
传输层加密 (TLS) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
静态加密 (TDE) | Y | 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 | Y | Y |
caching_sha2_password 认证 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N |
tidb_sm3_password 认证 | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
tidb_auth_token 认证 | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
authentication_ldap_sasl 认证 | Y | Y | Y | Y | Y | N | N | N | N | N | N |
authentication_ldap_simple 认证 | Y | Y | Y | Y | Y | N | N | N | N | N | N |
密码管理 | Y | Y | Y | Y | Y | Y | 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 | 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 |
数据导入和导出
数据导入和导出 | 8.3 | 8.2 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|---|---|
快速导入 (TiDB Lightning) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
快速导入 (IMPORT INTO ) | Y | Y | Y | Y | N | N | N | N | N | N | N |
mydumper 逻辑导出 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 |
Dumpling 逻辑导出 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
事务 LOAD DATA 5 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
数据迁移工具 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiDB Binlog 6 | 已废弃 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Change data capture (CDC) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiCDC 支持保存数据到存储服务 (Amazon S3/GCS/Azure Blob Storage/NFS) | Y | Y | Y | Y | Y | E | N | N | N | N | N |
TiCDC 支持在两个 TiDB 集群之间进行双向复制 | Y | Y | Y | Y | Y | Y | N | N | N | N | N |
TiCDC OpenAPI v2 | Y | Y | Y | Y | Y | N | N | N | N | N | N |
DM 支持迁移 MySQL 8.0 | Y | Y | Y | E | E | E | E | 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 的数据同步功能被废弃。从 v8.3.0 开始,TiDB Binlog 被完全废弃,并计划在未来版本中移除。如需进行增量数据同步,请使用 TiCDC。如需按时间点恢复 (point-in-time recovery, PITR),请使用 PITR。↩
- 从 TiDB v7.0.0 开始新增的参数
FIELDS DEFINED NULL BY
以及新增支持从 S3 和 GCS 导入数据,均为实验特性。从 TiDB v7.6.0 开始LOAD DATA
的事务行为与 MySQL 的事务行为一致,包括事务内的LOAD DATA
语句本身不再自动提交当前事务,也不会开启新事务,并且事务内的LOAD DATA
语句可以被显式提交或者回滚。此外,LOAD DATA
语句会受 TiDB 事务模式设置(乐观/悲观)影响。↩