【TiDB 4.0 PCTA 学习笔记】- 2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)@2班+欧阳

课程名称:2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)

学习时长:15min

课程收获:TiDB 和 MySQL 在语法、功能和行为上的主要差异

课程内容:

  • 兼容性概览
    • 协议
      • 100%兼容MySQL5.7协议
      • Client/Server 协议
      • 可以使用MySQL生态系统工具
    • 语法
      • 大多数MySQL5.7和8.0语法高度兼容
      • DDL
      • DML
    • 语义
      • 一些特性不同或不支持
      • 不支持是因为
        • 在分布式环境下很难实现
        • 尚未实现
        • 低回报(low ROI)
      • 不同
        • auto_increment
        • storage engine
  • 与MySQL不同的主要特性
    • 不支持特性
      • 存储过程和函数
      • 触发器
      • 事件
      • UDF
      • 外键约束和Check约束
    • 不同
      • auto_increment
        • auto_increment限制
          • 不支持添加到对已存在的列
        • auto_increment语义
          • 单TiDB集群
            • 唯一,自增且连续
          • 多TiDB集群
            • 唯一,不保证自增或连续
      • 索引
        • 不支持全文索引
          • 不支持spatial index
            不支持一些索引选项(除了visible/invisible)
      • 主键
        • 整数索引:聚簇索引
        • 其他索引:唯一索引
      • 不支持multi-schema change,即不能在同一个语句中同时修改多个列
      • 不支持有损变更
      • 隔离级别
        • 默认可重复读
          • 使用快照隔离实现
          • 和MySQL的可重复度有轻微不同
        • 读提交
          • 只适用于悲观事务
      • analyze table
        • MySQL中轻量操作,TiDB中重操作
      • 视图
        • 不支持insert/update/delete
      • 存储引擎
        • SQL层的“storage=xxx”会被忽略
        • 在启动时声明存储引擎: --store
      • 字符集
        • 只支持:utf8, utf8mb4, ascii, latin1以及二进制
      • 执行计划
        • explain结果和MySQL 显著不同

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