TiDB和MySQL在设计Schema主键的时候,有什么区别

TiDB和MySQL在设计Schema主键的时候,有什么区别

不建议自增主键,热点数据

参考这篇文章,会比较全

专栏 - 【TiDB 最佳实践系列】开发 Java 应用使用 TiDB 的最佳实践 | TiDB 社区

mysql建议用自增主键,分布式系统要用雪花算法这些作为主键。

TiDB自增列一般使用bigint,比单机MySQL消耗要多很多

TiDB和MySQL 自增区别比较明显,需要建表加入 AUTO_ID_CACHE 1参数才能保证基本连续,较新版本的 AUTO_ID_CACHE 1参数性能还可以。

每个表都只能有一个AUTO_INCREMENT,并且自增id按照id段(默认3万一个区间,可配置)提前预分配给所有tidb server。举例说明:2个TiDB server,当表刚创建时,TiDB1缓存[1,30000],TiDB2缓存[30001,60000],这样2个Session分别连接到2个TiDB,每个都写入一条记录的话,一个id=1,一个id=30001。
同一个表在同一个tidb server单调自增能保证,比如所以已经在TiDB1上建立的链接写入记录时id是连续的。

AUTO_INCREMENT | PingCAP 文档中心

为了防止写入热点,一般来说可以用AUTO_RANDOM 处理自增主键热点表,适用于代替自增主键,解决自增主键带来的写入热点