选择MySQL自增ID和UUID、MySQL有序uuid以及自定义函数实现的优缺点和建议 - 3.1 简介
最编程
2024-03-09 21:35:05
...
UUID唯一性的特点使它作为主键带来了很多的优势,比较大的问题主要是无序性带来的索引性能的下降。 使用mysql8自带的
uuid_to_bin
可以方便的将时间相关的字符高低位进行互换,从而解决了这个性能上的问题。
在通过 UUID()函数
生成的uuid值中,若将时间高低位互换,则时间就是单调递增的了,也就变得单调递增了。MySQL 8.0可以更换时间低位和时间高位的存储方式,这样UUID就是有序的UUID了。
MySQL 8.0还解决了UUID存在的空间占用的问题,除去了UUID字符串中无意义的"-"字符串,并且将字符串用二进制类型保存,这样存储空间降低为了16字节
。
可以通过MySQL8.0提供的uuid_to_bin
函数实现上述两个功能:
-- 生成一个 uuid SET @uuid = UUID(); -- uuid_to_bin(@uuid):实现去除无意义的 "-" 字符串 -- uuid_to_bin(@uuid,TRUE):实现时间低位与时间高位的互换,实现了该函数返回值随时间递增 SELECT @uuid,uuid_to_bin(@uuid),uuid_to_bin(@uuid,TRUE);
网络异常,图片无法展示
|
通过函数uuid_to_bin(@uuid,true)将UUID转化为有序UUID了。全局唯一
+ 单调递增
,这不就是我们想要的主键!
上一篇: HTML5 基础 1