课程名称:2.4 Behavior Differences Between MySQL and TiDB(TiDB 与 MySQL 的差异)
学习时长:
30mins
课程收获:
了解TiDB与MySQL的兼容性,及之间的差异
课程内容:
兼容性的概览
-
协议的兼容:
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一样 -
语法的兼容:
1.在Mysql5.7和8.0大多数语法都是支持的
2.DDL (Data Definition Language)
3.DML (Data Manipulation Language)
4.大多数的事务
5.预处理语句
6.Administration Statements -
语义的兼容:
大部分语义能够兼容,有一些不能兼容的因为分布式不方便实现
与MySQL有差异的部分特性
-
存储过程、自定义函数、触发器事件、约束
-
auto_increment属性
a.不支持现有列增加该属性
b.单个tidb实例可以保证唯一性,自增,连续
c.多个tidb实例只能保证唯一性,不能保证自增和连续性 -
索引
a.不支持全文索引
b.不支持空间索引
c.部分索引特性(除了visible/invisible) -
主键
a.整数型主键,类似MySQL聚集索引存模拟主键行为
b.其他数据类型主键,唯一索引存储模拟主键行为 -
不支持多模式更改
a.单一alter table 语句不支持修改多个字段 -
不支持有损列类型更改比如:
a.char(10)->char(5)
b.varchar(255)->varchar(10)
c.decimal(5)->decimal(3) -
隔离级别
a.默认REPEATABLE READ,实际上为Snapshot lsolation,与 MySQL 中的RR不同
b.READ COMMITTED,只能在悲观事务中设置 -
其他
a.Anaylze table
b.views
c.storeage engines
d.Charsets
e.execution plan"