您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Mysql UUID_SHORT()与UUID()是否可比

Mysql UUID_SHORT()与UUID()是否可比

uuid_short()产生服务器ID的按位聚集,相当静态的时间分量以及按顺序增加的24位整数。这些位填充为8字节整数。时间部分基于服务器的启动时间。

uuid()产生代表16字节version1 UUID的十六进制字符串。版本1 UUID是服务器ID,当前时间戳,如果以超高速生成ID时会起作用的几个字节以及一些实用程序位的按位组合。

要回答您的问题:uuid_short提供的时间和空间唯一性可与之匹敌uuid吗?答案是不。举例来说,a中的服务器IDuuid_short仅是一个字节。因此,如果您拥有256台或更多服务器,则至少其中一些将具有相同的节点ID,这意味着您将失去空间唯一性。为了进行比较,版本1 UUID中的服务器ID为6个字节长,有效地消除了除最大的公司服务器场外所有服务器重复的机会:)

一个更好的问题是是否uuid_short足够好。如果出现以下情况,您可能会看到ID冲突:

对于大多数人来说,第二个问题似乎不太可能,但是第一个问题值得一查,然后再承诺建立uuid_short密钥的基础。

***根据的MysqL文档uuid_short,如果在单台服务器的正常运行时间内生成了超过1600万个ID,您似乎会看到冲突。但这将是愚蠢的。MysqL文档继续说,只要您每秒不生成1600万个ID,就可以了。这意味着,如果您用尽1600万个顺序ID,它们必须在时间戳中增加一些比特。我还没有测试。

MySQL 2022/1/1 18:49:17 有471人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶