【IT老齐007】为什么大厂严禁使用自增主键

180 阅读1分钟

配合视频效果更佳:www.itlaoqi.com/chapter.htm…

内容介绍

  • 大表为什么不能用自增主键?
  • UUID是好的替代方案吗?
  • SnowFlake雪花算法是什么?

表样

常规范围分片会按自然属性范围分片

优点:

  • 容易理解,容易扩展

缺点:

  • 必须提前做好分片规划,会造成资源浪费
  • 自增主键必须连续
  • 只能采用”范围分片”
  • 形式会产生“尾部热点”效应

范围分片与Hash分片性能差距明显

使用UUID可以替代自增主键吗?不可以!

UUID是无序的,使用UUID是无序的作为主键会涉及大量索引重排(页分裂)现象

  • 0b7a900d-7e0c-4d14-b081-a20bdf1f1264

  • d09bc3ab-9670-4355-9614-ab2bc5ca6fd9

  • 251ae4de-e3af-43cf-8287-77a944d2703f

  • ad397986-4bd9-4986-9f38-eb81042c7492

InnoDB引擎基于B+树结构有序紧密存储,中间插入数据必然会造成”页分裂“现象产生

有没有一种分布式且有序的主键生成算法呢?

雪花算法(Snowflake)是 Twitter 公司分布式项目采用的 ID 生成算法。

注意:实现雪花算法时要注意时间回拨带来的影响,可能会引起主键冲突。