mysql 主键自增_还再使用数据库自增主键吗?

加油站: 在数字经济时代,数据的重要性堪比石油。大数据的四个特点:Volume(数据体量大)、Variety(数据类型繁多)、Velocity(处理速度快)、Value(商业价值高),只要合理利用数据并对其进行准确的分析,将会给企业带来很高的价值回报。

前言:

    部分企业使用mysql数据库新建表时选择自增主键id,但其实当长期使用时会造成一定的问题,比如: 单点故障,自增上限,数据迁移等一系列问题.

    下面分析下数据库的自增主键和UUID的优缺点,在使用过程中,大家根据业务场景选择适合的主键生成方式.

正文:

一.自增主键

介绍:    

    自增ID是在设计表时将id字段的值设置为自增的形式,这样当插入一行数据时无需指定id会自动根据前一字段的ID值+1进行填充。在MySQL数据库中,可通过sql语句AUTO_INCREMENT来对特定的字段启用自增赋值 使用自增ID作为主键,能够保证字段的原子性.

优点:

  1. 数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;

  2. 数字型,占用空间小,易排序,在程序中传递也方便;

  3. 如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。

缺点:

  1. 因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。特别是在新系统上线时,新旧系统并行存在,并且是异库异构的数据库的情况下,需要双向同步时,自增主键将是你的噩梦;

  2. 在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;

  3. 若系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个字符标识(例如“o”,old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。

一.UUID

介绍:    

    UUID含义是通用唯一识别码 (Universally Unique Identifier),指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。换句话说能够在一定的范围内保证主键id的唯一性。

优点:

  1. 出现数据拆分、合并存储的时候,能达到全局的唯一性.

缺点:

  1. 影响插入速度, 并且造成硬盘使用率低.

  2. uuid之间比较大小相对数字慢不少, 影响查询速度.

  3. uuid占空间大, 如果你建的索引越多, 影响越严重.

总结:

    至于使用UUID还是自增ID主要还是看项目是否足够庞大数据量是否足够多。从使用方便性上来说自增ID使用简单,不需要额外支持,而UUID相对麻烦一些,涉及到UUID算法的选取、程序的嵌入等等。而从应对庞大系统的效果上来说,UUID就比自增ID显得优秀得多。怎么选择就是看自己的实际情况,按需选择。

    本篇文章到此结束,有问题请留言一起讨论,精彩持续进行中...

9263bef1277a4d25c6f24f12314a39e1.png

您所喜欢,点个在看 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值