课程名称:课程版本(101)+ 2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)
学习时长:15min
课程收获:了解 TiDB 和 MySQL 在语法、功能和行为上的主要差异
课程内容:
一、兼容性
1、协议兼容
A、Client/Server 协议
B、MySQL生态工具绝大多数可以直接用在TiDB上
客户端工具
PHPMyAdmin
Navicat
MySQL Workbench
数据迁移工具
Mysqldump
Mydumper/myloader
Connector
MySQL connector
2、语法兼容(MySQL5.7/8.0)
A、DDL
B、DML
C、事务/锁
D、管理语句
E、管理报表
3、语义兼容
A、实现部分
B、分布式环境下难以实现
C、有计划但没有完成
D、投入比较低
二、区别
A、存储过程和函数
B、触发器
C、事件
D、自定义函数
E、外键约束和检查约束
三、差异特性
1、AUTO_INCREMENT
A、TiDB无法加到已经存在的列上
B、单个TiDB节点可以保证唯一性,自增性和连续性,多个节点中只能保证唯一性
2、INDEX
A、不支持全文索引,空间索引和一些索引选项
B、TiDB4.0支持不可见索引
3、主键
A、主键存储和唯一索引存储一致
4、Multi-schema
A、指同一个SQL中修改多个schema信息
B、不支持同一个SQL中修改多个schema信息,比如同时修改两列的类型
5、不支持有损类型更改
比如 char(10) - > char(5)
6、隔离级别
A、TiDB 默认 REPEATABLE READ
B、READ COMMITTED只能在悲观事务
7、Analyze Table
MySQL中是轻量级的,而TiDB中较重(重构统计信息)
8、View
TiDB中View 只读 不支持 增删改等写入操作
9、存储引擎
A、SQL 层的 ’STORAGE = XXX‘ 是被忽视的
B、需要到启动时使用 ’–store‘来修改
10、Charsets
只支持 utf8, utf8mb4,ascii,latin1 and binary
11、Plan
‘explain’ 输出差异极大