TIDB与MYSQL兼容性测试
1.建表插入导入兼容性
测试场景:
将项目的生产数据库备份导入到TIDB测试环境。
测试结果:
有少量建表语句不兼容,建表语句需要调整,对于某些时间字段,例如updateTime
timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’
不兼容。
导入必须拆分SQL,提交的大小有限制,TIDB事务提交最大100M.导入必须要用专业工具拆分式导入,
导入基本成功,导入的时间跟MYSQL导入时间大体一致3到4个小时。传统的MYSQL命令导入跟Navicat for MySQL工具导入,遇到大表,都会失败。
用传统方法倒入TIDB事务提交的限制一定会遇到
我们此次用Mydumper导入,数据导入到TIDB基本成功。Mydumper是把SQL分割成100M以下的多个文件进行顺序倒入!
2.业务程序兼容性
3.SQL性能测试
测试场景
MySQL 8.0 TIDB4.2
16核心32G内存虚拟机centos7.3
1个实例 16核心32G内存虚拟机centos7.3
1个实例
1.简单SQL
结论:简单SQL执行速度差不多,mysql略快
2.复杂关联查询
案例1:简单数据关联查询 MYSQL快
案例2: 大数据关联表查询条件简单 TIDB快
案例3: 大数据关联查询复杂条件 MYSQL快
案例4: 关联子查询,级联更新子查询 TIDB支持非常不好
3.事务对比
MYSQL悲观锁,TIDB乐观锁
4.测试初步结论:
TiDB较适合简单查询的OLTP系统:
得益于TiDB的分布式架构,并发上比mysql更优,在大表关联查询上有一定优势,但是在复杂的子查询语句表现不尽人意。
TIDB对于级联更新语句支持非常不好。
TIDB特别适合电商项目数据量订单庞大,统计不复杂的业务场景。
复杂统计分析的项目非常不合适,存储过程,触发器,自定义函数,完全都不能用。
本测试只代表个人观点,真实的使用场景需要实际中验证。