|
iDB 高度兼容 MySQL 协议,以及 MySQL 5.7 和 MySQL 8.0 常用的功能及语法。MySQL 生态中的系统工具(PHPMyAdmin、Navicat、MySQL Workbench、DBeaver 和其他工具)、客户端等均适用于 TiDB。
但 TiDB 尚未支持一些 MySQL 功能,可能的原因如下:
有更好的解决方案,例如 JSON 取代 XML 函数。
目前对这些功能的需求度不高,例如存储过程和函数。
一些功能在分布式系统上的实现难度较大。
除此以外,TiDB 不支持 MySQL 复制协议,但提供了专用工具用于与 MySQL 复制数据:
从 MySQL 复制:TiDB Data Migration (DM) 是将 MySQL/MariaDB 数据迁移到 TiDB 的工具,可用于增量数据的复制。
向 MySQL 复制:TiCDC 是一款通过拉取 TiKV 变更日志实现的 TiDB 增量数据同步工具,可通过 MySQL sink 将 TiDB 增量数据复制到 MySQL。
注意
本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于安全特性、悲观事务模式相关的兼容信息,请查看各自具体页面。
- 不支持的功能特性
- 存储过程与函数
- 触发器
- 事件
- 自定义函数
- 全文语法与索引 #1793
- 空间类型的函数(即 GIS/GEOMETRY)、数据类型和索引 #6347
- 非 ascii、latin1、binary、utf8、utf8mb4、gbk 的字符集
- SYS schema
- MySQL 追踪优化器
- XML 函数
- X-Protocol #1109
- 列级权限 #9766
- XA 语法(TiDB 内部使用两阶段提交,但并没有通过 SQL 接口公开)
- CREATE TABLE tblName AS SELECT stmt 语法 #4754
- CHECK TABLE 语法 #4673
- CHECKSUM TABLE 语法 #1895
- REPAIR TABLE 语法
- OPTIMIZE TABLE 语法
- HANDLER 语句
- CREATE TABLESPACE 语句
- "Session Tracker: 将 GTID 上下文信息添加到 OK 包中"
- 降序索引 #2519
- SKIP LOCKED 语法 #18207
- 横向派生表 #40328
- 与 MySQL 有差异的特性详细说明
- 自增 ID
复制代码
TiDB 的自增列既能保证唯一,也能保证在单个 TiDB server 中自增,使用 AUTO_INCREMENT MySQL 兼容模式能保证多个 TiDB server 中自增 ID,但不保证自动分配的值的连续性。建议避免将缺省值和自定义值混用,以免出现 Duplicated Error 的错误。
TiDB 可通过 tidb_allow_remove_auto_inc 系统变量开启或者关闭允许移除列的 AUTO_INCREMENT 属性。删除列属性的语法是:ALTER TABLE MODIFY 或 ALTER TABLE CHANGE。
TiDB 不支持添加列的 AUTO_INCREMENT 属性,移除该属性后不可恢复。
对于 v6.6.0 及更早的 TiDB 版本,TiDB 的自增列行为与 MySQL InnoDB 保持一致,要求自增列必须为主键或者索引前缀。从 v7.0.0 开始,TiDB 移除了该限制,允许用户更灵活地定义表的主键。
|
|