TiDB 功能概览
本文列出了 TiDB 功能在不同版本中的支持变化情况,包括长期支持版本 (LTS) 和最新的 LTS 版本之后的开发里程碑版本 (DMR)。
数据类型,函数和操作符
数据类型,函数,操作符 | 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 |
JSON 类型 | 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 |
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 |
JSON 函数 | 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 |
字符集和排序规则 1 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
用户级别锁 | Y | Y | Y | Y | Y | N | N | N | N |
索引和约束
索引和约束 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|
表达式索引 2 | Y | Y | Y | Y | E | E | E | E | E |
列式存储 (TiFlash) | Y | Y | Y | Y | Y | Y | Y | Y | Y |
使用 FastScan 加速 OLAP 场景下的查询 | Y | Y | Y | E | N | N | N | N | N |
RocksDB 引擎 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Titan 插件 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Titan Level Merge | E | E | E | E | E | E | E | E | E |
使用 bucket 提高数据扫描并发度 | 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 |
CHECK 约束 | 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 | N | N | N | N | N | N |
外键约束 | E | E | E | N | N | N | N | N | N |
TiFlash 延迟物化 | Y | Y | Y | N | N | N | N | N | N |
SQL 语句
SQL 语句 3 | 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 |
INSERT ON DUPLICATE KEY UPDATE | Y | Y | Y | Y | Y | Y | Y | Y | Y |
LOAD DATA INFILE | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SELECT INTO OUTFILE | Y | Y | Y | Y | Y | Y | Y | Y | Y |
INNER JOIN , LEFT|RIGHT [OUTER] JOIN | Y | Y | Y | Y | Y | Y | Y | Y | Y |
UNION ,UNION ALL | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXCEPT 和 INTERSECT 运算符 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
GROUP BY ,ORDER BY | 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 | Y |
START TRANSACTION ,COMMIT ,ROLLBACK | Y | Y | Y | Y | Y | Y | Y | Y | Y |
EXPLAIN | 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 |
BATCH [ON COLUMN] LIMIT INTEGER DELETE | Y | Y | Y | Y | Y | N | N | N | N |
BATCH [ON COLUMN] LIMIT INTEGER INSERT/UPDATE/REPLACE | Y | Y | Y | Y | N | N | N | N | N |
ALTER TABLE ... COMPACT | Y | Y | Y | Y | E | N | N | N | N |
表级锁 (Table Lock) | E | E | E | E | E | E | E | E | E |
物化列式存储的查询结果 | Y | Y | Y | E | N | N | N | N | N |
高级 SQL 功能
高级 SQL 功能 | 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 | E | E |
非 Prepare 语句执行计划缓存 | Y | Y | E | N | N | N | N | N | N |
执行计划绑定 (SQL Binding) | Y | Y | Y | Y | Y | Y | Y | Y | Y |
跨数据库执行计划绑定 (Cross-DB Binding) | Y | N | N | N | N | N | N | N | N |
根据历史执行计划创建绑定 | Y | Y | Y | E | N | N | N | N | N |
下推计算结果缓存 (Coprocessor Cache) | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Stale Read | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Follower Read | Y | Y | Y | Y | Y | Y | Y | Y | Y |
通过系统变量 tidb_snapshot 读取历史数据 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Optimizer hints | Y | Y | Y | Y | Y | Y | Y | Y | Y |
MPP 执行引擎 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
MPP 执行引擎 - compression exchange | Y | Y | Y | N | N | N | N | N | N |
TiFlash Pipeline 执行模型 | Y | Y | N | N | N | N | N | N | N |
TiFlash 副本选择策略 | Y | Y | N | N | N | N | N | N | N |
索引合并 | Y | Y | Y | Y | Y | Y | E | E | E |
基于 SQL 的数据放置规则 | Y | Y | Y | Y | Y | E | E | N | N |
Cascades Planner | E | E | E | E | E | E | E | E | E |
Runtime Filter | Y | Y | N | N | N | N | N | N | N |
数据定义语言 (DDL)
数据定义语言 (DDL) | 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 | E | E | E | E | E | E |
视图 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
序列 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
AUTO_INCREMENT 列 | Y | Y | Y | Y4 | Y | Y | Y | Y | Y |
AUTO_RANDOM 列 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TTL (Time to Live) | Y | Y | Y | E | N | N | N | N | N |
DDL 算法断言 | 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 | N | N |
并行 DDL | Y | Y | Y | Y | N | N | N | N | N |
添加索引加速 | Y | Y | Y | Y | N | N | N | N | N |
元数据锁 | Y | Y | Y | Y | N | N | N | N | N |
FLASHBACK CLUSTER | Y | Y | Y | Y | N | N | N | N | N |
暂停/恢复 DDL | Y | Y | N | N | N | N | N | N | N |
TiDB 加速建表 | E | N | N | N | N | N | N | N | N |
设置 BDR Role 用于 TiCDC 双向同步时同步 DDL | E | N | N | N | N | N | N | N | N |
事务
事务 | 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 |
1PC | Y | Y | Y | Y | Y | Y | Y | Y | Y |
大事务 (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 | N | N | N | N | N | N | N | N |
批量 DML 语句的执行方式 (tidb_dml_type = "bulk" ) | E | N | N | N | N | N | N | N | N |
分区
分区 | 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 |
Hash 分区 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Key 分区 | Y | Y | Y | N | N | N | N | N | N |
List 分区 | Y | Y | Y | Y | Y | E | E | E | E |
List COLUMNS 分区 | Y | Y | Y | Y | Y | E | E | E | E |
List 和 List COLUMNS 分区表的默认分区 | Y | Y | N | N | N | N | N | N | N |
EXCHANGE PARTITION | Y | Y | Y | Y | E | E | E | E | E |
REORGANIZE PARTITION | Y | Y | Y | N | N | N | N | N | N |
COALESCE PARTITION | Y | Y | Y | N | N | N | N | N | N |
动态裁剪 | Y | Y | Y | Y | Y | E | E | E | E |
Range COLUMNS 分区 | Y | Y | Y | Y | N | N | N | N | N |
Range INTERVAL 分区 | Y | Y | Y | E | N | N | N | N | N |
分区表转换为非分区表 | Y | Y | N | N | N | N | N | N | N |
对现有表进行分区 | Y | Y | N | N | N | N | N | N | N |
统计信息
统计信息 | 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 |
扩展统计信息 | E | E | E | E | E | E | E | E | E |
统计反馈 | N | N | N | N | 已废弃 | 已废弃 | E | E | E |
统计信息自动更新 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
动态裁剪 | Y | Y | Y | Y | Y | E | E | E | E |
收集部分列的统计信息 | E | E | E | E | E | E | N | N | N |
限制统计信息的内存使用量 | E | E | E | E | E | N | N | N | N |
随机采样约 10000 行数据来快速构建统计信息 | 已废弃 | 已废弃 | E | E | E | E | E | E | E |
锁定统计信息 | Y | Y | E | E | N | N | N | N | N |
轻量级统计信息初始化 | Y | Y | E | N | N | N | N | N | N |
显示统计信息收集的进度 | Y | Y | N | N | N | N | N | N | N |
安全
安全 | 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 |
静态加密 (TDE) | 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 |
caching_sha2_password 认证 | Y | Y | Y | Y | Y | Y | Y | Y | N |
tidb_sm3_password 认证 | Y | Y | Y | Y | N | N | N | N | N |
tidb_auth_token 认证 | Y | Y | Y | Y | N | N | N | N | N |
authentication_ldap_sasl 认证 | Y | Y | Y | N | N | N | N | N | N |
authentication_ldap_simple 认证 | Y | Y | Y | N | N | N | N | N | N |
密码管理 | 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 |
数据导入和导出
数据导入和导出 | 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 |
快速导入 (IMPORT INTO ) | Y | Y | N | N | N | N | N | N | N |
mydumper 逻辑导出 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 | 已废弃 |
Dumpling 逻辑导出 | 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 |
TiDB Binlog 6 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Change data capture (CDC) | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiCDC 支持保存数据到存储服务 (Amazon S3/GCS/Azure Blob Storage/NFS) | Y | Y | Y | E | N | N | N | N | N |
TiCDC 支持在两个 TiDB 集群之间进行双向复制 | Y | Y | Y | Y | N | N | N | N | N |
TiCDC OpenAPI v2 | Y | Y | Y | N | N | N | N | N | N |
DM 支持迁移 MySQL 8.0 | Y | E | E | E | E | N | N | N | N |
管理,可视化和工具
管理,可视化和工具 | 8.1 | 7.5 | 7.1 | 6.5 | 6.1 | 5.4 | 5.3 | 5.2 | 5.1 |
---|---|---|---|---|---|---|---|---|---|
TiDB Dashboard 图形化展示 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiDB Dashboard 持续性能分析功能 | Y | Y | Y | Y | Y | E | E | N | N |
TiDB Dashboard Top SQL 功能 | Y | Y | Y | Y | Y | E | N | N | N |
TiDB Dashboard SQL 诊断功能 | Y | Y | Y | Y | E | E | E | E | E |
TiDB Dashboard 集群诊断功能 | Y | Y | Y | Y | E | E | E | E | E |
Grafana 中的 TiKV-FastTune 面板 | E | E | E | E | E | E | E | E | E |
Information schema | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Metrics schema | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Statements summary tables | Y | Y | Y | Y | Y | Y | Y | Y | Y |
Statements summary tables - 持久化 statements summary | E | E | E | N | N | N | N | N | N |
慢查询日志 | Y | Y | Y | Y | Y | Y | Y | Y | Y |
TiUP 部署 | 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 |
Global Kill | Y | Y | Y | Y | Y | E | E | E | E |
Lock View | Y | Y | Y | Y | Y | Y | Y | Y | E |
SHOW CONFIG | Y | Y | Y | Y | Y | Y | Y | Y | Y |
SET CONFIG | Y | Y | Y | Y | Y | E | E | E | E |
DM WebUI | E | E | E | E | E | N | N | N | N |
前台限流 | Y | Y | Y | Y | E | N | N | N | N |
后台限流 | E | E | E | E | N | N | N | N | N |
基于 EBS 的备份和恢复 | Y | Y | Y | Y | N | N | N | N | N |
PITR | Y | Y | Y | Y | N | N | N | N | N |
全局内存控制 | Y | Y | Y | Y | N | N | N | N | N |
RawKV 跨集群复制 | E | E | E | E | N | N | N | N | N |
Green GC | E | E | E | E | E | E | E | E | E |
资源管控 (Resource Control) | Y | Y | Y | N | N | N | N | N | N |
Runaway Queries 自动管理 | Y | E | N | N | N | N | N | N | N |
后台任务资源管控 | E | E | N | N | N | N | N | N | N |
TiFlash 存算分离架构与 S3 支持 | Y | Y | E | N | N | N | N | N | N |
选择执行分布式执行框架任务的 TiDB 节点 | Y | Y | N | N | N | N | N | N | N |
通过系统变量 tidb_enable_tso_follower_proxy 控制 PD Follower Proxy 功能 | Y | Y | Y | Y | Y | Y | Y | N | N |
通过系统变量 pd_enable_follower_handle_region 控制 Active PD Follower 功能 | E | N | N | N | N | N | N | N | N |
PD 微服务 | E | N | N | N | N | N | N | N | N |
TiDB 分布式执行框架 | Y | Y | E | N | N | N | N | N | N |
全局排序 | Y | E | 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 v7.0.0 开始新增的参数
FIELDS DEFINED NULL BY
以及新增支持从 S3 和 GCS 导入数据,均为实验特性。从 TiDB v7.6.0 开始LOAD DATA
的事务行为与 MySQL 的事务行为一致,包括事务内的LOAD DATA
语句本身不再自动提交当前事务,也不会开启新事务,并且事务内的LOAD DATA
语句可以被显式提交或者回滚。此外,LOAD DATA
语句会受 TiDB 事务模式设置(乐观/悲观)影响。↩