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

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

学习时长:

30mins

课程收获:

了解TiDB与MySQL的兼容性,及之间的差异

课程内容:

兼容性的概览

  1. 协议的兼容:
    1.与MySQL 5.7 客户端/服务端的协议百分百兼容;
    2.MySQL生态工具大多数能够操作TiDB
    2.1客户端工具:
    a.PHPMyAdmin
    b.Navicat
    c.MySQL workbench
    2.2数据迁移工具
    a.mysqldump
    b.mydumper/myloader
    3.1编程语言的链接和MySQL一样

  2. 语法的兼容:
    1.在Mysql5.7和8.0大多数语法都是支持的
    2.DDL (Data Definition Language)
    3.DML (Data Manipulation Language)
    4.大多数的事务
    5.预处理语句
    6.Administration Statements

  3. 语义的兼容:
    大部分语义能够兼容,有一些不能兼容的因为分布式不方便实现

与MySQL有差异的部分特性

  1. 存储过程、自定义函数、触发器事件、约束

  2. auto_increment属性
    a.不支持现有列增加该属性
    b.单个tidb实例可以保证唯一性,自增,连续
    c.多个tidb实例只能保证唯一性,不能保证自增和连续性

  3. 索引
    a.不支持全文索引
    b.不支持空间索引
    c.部分索引特性(除了visible/invisible)

  4. 主键
    a.整数型主键,类似MySQL聚集索引存模拟主键行为
    b.其他数据类型主键,唯一索引存储模拟主键行为

  5. 不支持多模式更改
    a.单一alter table 语句不支持修改多个字段

  6. 不支持有损列类型更改比如:
    a.char(10)->char(5)
    b.varchar(255)->varchar(10)
    c.decimal(5)->decimal(3)

  7. 隔离级别
    a.默认REPEATABLE READ,实际上为Snapshot lsolation,与 MySQL 中的RR不同
    b.READ COMMITTED,只能在悲观事务中设置

  8. 其他
    a.Anaylze table
    b.views
    c.storeage engines
    d.Charsets
    e.execution plan"

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