TiDB 与 MySQL 兼容性深度解析
候选人小张在字节面试中,面试官问:
"你们想把 MySQL 迁移到 TiDB,兼容性怎么样?"
小张说:"听说兼容 MySQL 协议,应该差不多吧?"
面试官追问:"那自增主键呢?事务呢?存储过程呢?"
小张说:"...应该有差异吧?"
【面试官心理】 这道题我用来测试候选人对 TiDB 迁移方案的理解深度。能说出基本兼容的占 40%,能讲清限制的占 15%,能提出迁移注意事项的占 5%。
一、兼容性概述 🔴
1.1 协议兼容
1.2 SQL 兼容
1.3 关键字兼容
二、主要差异 🔴
2.1 自增主键
2.2 存储过程
2.3 字符集
三、性能差异 🟡
3.1 分布式 JOIN
3.2 事务限制
3.3 索引限制
四、迁移注意事项 🟡
4.1 迁移前检查
4.2 应用层适配
4.3 灰度迁移策略
五、TiDB 特有功能 🟡
5.1 Auto Random
5.2 分区表
💡
TiDB 迁移不是简单的"替换",需要评估应用层的兼容性。建议先在测试环境充分验证。
【面试官心理】 能说出"自增主键不连续"和"分布式 JOIN 性能差异"的候选人,基本都有实际迁移经验。这是 P6+ 的水准。