前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

1、UUID

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写

UUID生成的是length=32的16进制格式的字符串,如果回退为byte数组共16个byte元素,即UUID是一个128bit长的数字, 从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复

UUID.randomUUID()
    
标准的UUID格式为
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
cac2b0d7-7842-479a-93de-2f15d5a6ed16

UUID由3部分组成(吐槽下,明明是3部分,却被分成了5段):

  1. 当前日期和时间。(虽然是基于时间,但是输出并不是数字,所以无法排序)
  2. 时钟序列,用来区分同一时刻生成的多个UUID。
  3. 全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得(没有网卡时一般取随机数)。

1.1、优点

  • 本地生成,而且简单,性能好,代码方便。没有高可用风险

1.2、缺点

  • 没有排序,无法保证趋势递增

  • UUID比较的长,占用大量存储空间,如果是海量数据库,就需要考虑存储量的问题。

  • 最主要的问题是在索引上,无序不可读,在建立索引和基于索引进行查询时都存在性能问题,查询的效率比较低。

ContactAuthor