【TiDB 4.0 PCTA 学习笔记】- 2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)@3班+加几分

课程名称:课程版本(101/201/301)+2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)

学习时长:15分钟

课程收获:了解 MySQL 与 TiDB 的语法&语义 差异

课程内容:

语法兼容
支持绝大多数mysql5.7/mysql8.0 的
DDL、DML、Basic Transaction/Locking Statements
Prepared Statements
Administration Statements

语义兼容
部分不支持,因为:
分布式环境难以实现
已有设计但还未完全实现

部分与MySQL有区别:
1、auto_increment
不支持对一个已经存在的列添加auto_increment属性
单个TiDB实例不离线的情况下,保证auto_increment唯一,连续,递增
多个TiDB实例保证auto_increment唯一,但不保证连续,也不保证递增

2、存储引擎
只在语法上支持mysql innodb,建表时指定STORAGE=XXX 也会忽略,不起作用
TiDB里,启动时用 --store 指定存储引擎,如–store=tikv

3、不支持的索引
不支持的全文索引Fulltext index、空间索引 Spatial index、B+tree、Hash tree、Some index option(except VISIBLE/INVISIBLE)

4、主键
数值类型主键,存储与mysql的聚集索引类似
非数值类型主键,模拟唯一索引存储

5、一个DDL Statement里,不支持对Multi-schema 多个列 同时DDL
如 alter table t modify column a int,modify column b int;
alter table t add column a int,drop cloumn b;

6、不支持有长度或精度有缺失的变更,即同种数据类型只能改大长度,不能改小
比如,char(10)—>char(5)、varchar(100)—>char(10)、decimal(5)—>decimal(3)

7、隔离级别 Isolation Level
RR(mysql的默认隔离级别),在TiDB里,用Snapshot Isolation 快照隔离实现,与 Repeatable Read 有些许差别,Snapshot Isolation更严格
READ COMMITTED 在TiDB里,只在悲观事务实现

8、Analyze Table
在mysql innodb是轻量的,但在TiDB是重量级的,因为要重构统计信息

9、视图View
不支持对视图的insert/update/delete

10、Charsets 字符集
只支持 utf8、utf8mb4、ascii、latin1 与 binary

11、explain 语句 执行计划的展示结果与mysql 不一样

12、其他不支持的特性
存储过程&函数 Stored procedures and functions
触发器 Triggegrs
事件 Events
用户自定义函数 User-definded functions
外键约束与check 约束 Foreign key constraints/Check constraints

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

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。