主键用数字还是UUID?

1. 什么是UUID?

  • UUID是通用唯一识别码的缩写,主要作用是让分布式系统中的数据具有唯一性;

  • UUID由三个部分组成:
    在这里插入图片描述

    1. 第一个部分是时间戳生成的;
    2. 第二个部分是主机的硬件时钟序列;
    3. 第三个部分是唯一机器识别号

2. 为什么要使用UUID?

  • 在数据库集群中,为了避免每个MySQL各自生成的主键重复,所有有人考虑采用UUID方法;

好处:

  • 使用UUID,分布式生成主键,降低了全局节点的压力,使得主键生成速度更快;
  • 使用UUID生成的主键值全局唯一;
  • 跨服务器合并数据方便;

缺点:

  • UUID占用16个字节,比4字节的int类型和8字节的bigint类型更加占用存储空间;
  • UUID是字符串类型,查询速度很慢;
  • UUID不是顺序增长,作为主键,数据写入IO随机性很大;

3. 主键自动增长的优点

  • int和bigint类型占用空间小;
  • 检索速度比字符串块;
  • 是自动增长的,所以IO写入连续性较好;

4. 分布式环境下的主键自动增长

  • 使用MyCat中间件实现分布式主键;
  • MyCat用的单线程,但是性能上也没有什么问题;

5. 总结

  • 无论什么场合都不要用UUID作为主键;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值