准备把一套 MySQL 业务迁到 OB,原来用的是 AUTO_INCREMENT 自增主键。
了解到现在更推荐用有序的分布式 ID(比如雪花算法那种),但改动量不小。想请教:
- OB 里自增列在分布式场景下有什么坑?
- 如果继续用自增,需要注意什么(热点?)?
- 换成业务侧生成 ID,大家的实践是怎样的?
有迁移经验的朋友指点下。
准备把一套 MySQL 业务迁到 OB,原来用的是 AUTO_INCREMENT 自增主键。
了解到现在更推荐用有序的分布式 ID(比如雪花算法那种),但改动量不小。想请教:
有迁移经验的朋友指点下。
根据文档库中的信息,OceanBase 数据库中使用自增列作为分区键时需要注意以下几点:
全局唯一但不保证递增:
跳变问题:
ORDER 和 NOORDER。默认为 ORDER 模式。
ORDER 模式:基于集中缓存的自增列,保证全局递增。NOORDER 模式:基于分布式缓存的自增列,仅保证全局唯一。热点问题:
性能优化:
ORDER,以保证全局递增,减少跳变问题。如果决定使用业务侧生成的分布式 ID(如雪花算法生成的 ID),可以参考以下实践:
ID 生成服务:
应用层改造:
数据迁移:
总结来说,如果你决定继续使用自增主键,需要关注热点问题和性能优化;如果选择使用分布式 ID,则需要进行应用层的改造和部署专门的 ID 生成服务。无论哪种方案,都需要仔细规划和测试,确保迁移过程的顺利进行。
具体信息可参考以下文档: