LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1684|回复: 0

TiDB 与 MySQL 兼容性对比

[复制链接]
发表于 2024-1-5 22:37:18 | 显示全部楼层 |阅读模式
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 的总体差异。关于安全特性、悲观事务模式相关的兼容信息,请查看各自具体页面。

  1. 不支持的功能特性
  2. 存储过程与函数
  3. 触发器
  4. 事件
  5. 自定义函数
  6. 全文语法与索引 #1793
  7. 空间类型的函数(即 GIS/GEOMETRY)、数据类型和索引 #6347
  8. 非 ascii、latin1、binary、utf8、utf8mb4、gbk 的字符集
  9. SYS schema
  10. MySQL 追踪优化器
  11. XML 函数
  12. X-Protocol #1109
  13. 列级权限 #9766
  14. XA 语法(TiDB 内部使用两阶段提交,但并没有通过 SQL 接口公开)
  15. CREATE TABLE tblName AS SELECT stmt 语法 #4754
  16. CHECK TABLE 语法 #4673
  17. CHECKSUM TABLE 语法 #1895
  18. REPAIR TABLE 语法
  19. OPTIMIZE TABLE 语法
  20. HANDLER 语句
  21. CREATE TABLESPACE 语句
  22. "Session Tracker: 将 GTID 上下文信息添加到 OK 包中"
  23. 降序索引 #2519
  24. SKIP LOCKED 语法 #18207
  25. 横向派生表 #40328
  26. 与 MySQL 有差异的特性详细说明
  27. 自增 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 移除了该限制,允许用户更灵活地定义表的主键。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表