【TiDB 4.0 PCTA 学习笔记】- 2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)@王晓俊-4班

课程名称:课程版本(101/201/301)+ 课程名称

学习时长:

10

课程收获:

Tidb和mysql的差异,主要了解了Tidb中不支持的功能。

课程内容:

协议兼容

  • 客户端/服务端 协议兼容
  • Mysql生态工具可以用于Tidb
    • 客户工具 PHPMyadmin,Navicat,Mysql Workbench
    • 数据迁移工具 mysqldump, mydumper/myloader
    • Mysql connector

语法兼容

  • Mysql 5.7/8.0中的大部分语法都兼容
  • DDL
  • DML
  • 基本事物语句、锁
  • prepared 语句
  • 管理语句

语义兼容

  • 极少数不兼容,因为

    • 在分布式数据库中,开发难度很大
    • 在设计阶段
    • 开发回报远低于投入
  • 极少数特性和mysql不同

    • auto_incremnet
    • storage engine

不支持特性

  • 存储过程,函数
  • 触发器
  • event
  • 自定义函数
  • 外键

和mysql的主要差异

  • auto_increment
    • 不能对已存在的列增加
  • 自增列语义不同
  • 单tidb集群:
    • 可以保证唯一性,自增性和连续性
  • 多实例tidb集群:
    • 不能保证自增和连续
  • 不支持索引
    • 全文索引
    • 空间索引
    • 某些索引选项(除了visible/invisible)
  • 主键
    • int主键:存储为聚簇索引,和mysql一致
    • 其他主键:作为唯一索引存储
  • 多表ddl语句
  • 有损列ddl
    • char(10) -> char(5)
  • 隔离级别
    • RR
    • RC
      • 只能在悲观模式下设置
  • analyze table
  • views
    • 不支持增删改
  • 存储引擎
  • 字符集
    • 只支持 utf8, utf8mb4, ascii, latin1 和 binary
  • 执行计划

学习过程中参考的其他资料