UUID算法分析

159 阅读1分钟

1、UUID简介

UUID(Universally Unique Identifier)的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符,示例:550e8400-e29b-41d4-a716-446655440000,到目前为止业界一共有5种方式生成UUID,详情见IETF发布的UUID规范 A Universally Unique IDentifier (UUID) URN Namespace。

2、UUID的优缺点

优点:

(1)性能非常高:本地生成,没有网络消耗。

缺点:

(1)不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用;

(2)信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位置。

(3)ID作为主键时在特定的环境会存在一些问题,比如做DB主键的场景下,UUID就非常不适用:

1、MySQL官方有明确的建议主键要尽量越短越好,36个字符长度的UUID不符合要求。

image.png

2、对MySQL索引不利:如果作为数据库主键,在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁变动,严重影响性能。