【实战】为什么不用UUID做主键?

  • 不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用。
  • 信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位置。
  • ID作为主键时在特定的环境会存在一些问题,比如做DB主键的场景下,UUID就非常不适用:

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

复制代码
All indexes other than the clustered index are known as secondary indexes. In InnoDB, each record in a secondary index contains the primary key 
columns for the row, as well as the columns specified for the secondary index. InnoDB uses this primary key value to search for the row in the clustered index.
If the primary key is long, the secondary indexes use more space, so it is advantageous to have a short primary key.
复制代码
  • ② 对MySQL索引不利:如果作为数据库主键,在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁变动,严重影响性能。

然后转载一下这个:

https://www.cnblogs.com/wyq178/p/12548864.html

总结下

1.页的利用率,页面几乎是被顺序填充满才产生分裂。

2.uuid分裂次数更多,对于已经填满的页面,因为无序很可能多次命中,产生分裂,进而产生更多不被填满页面。还有分裂本身的成本

3.页高速缓存命中率低,需要更多的磁盘I/O,并且是随机的

 

posted @ 2020-09-17 16:34  l2c  阅读(1397)  评论(0编辑  收藏  举报