mysql使用uuid_short生成的数据长度17位或20位分别是什么情况

mysql使用uuid_short生成的数据长度17位或20位分别是什么情况,第1张

原因是在字段类型上面:

bigint 20 对应的类型是 long long 类型,有符号 ,范围:-2^63 ~ 2^63-1

而UUID_SHORT() 返回的是  unsigned long long 类型,无符号,范围:0 ~ 2^64-1

在MySQL设置的时候没有勾选 「无符号」这个选项导致的,勾选上就解决了。

作为主键,UUID长度过长,主键索引KeyLength长度过大,而影响能够基于内存的索引记录数量,进而影响基于内存的索引命中率,而基于硬盘进行索引查询性能很差。严重影响数据库服务器整体的性能表现。 建议,

如果考虑分布式,可以仿造MongoDB建立索引,能有效实现服务器同步,KeyLength也很小。如果使用UUID进行数据同步管理,需要对UUID字符串进行Djb的Hash算法,然后对Int/Long类型的哈希数值进行索引。第一次检索,通过UUIDHashCode将结果集范围缩小,再使用UUID定位具体数据。这样性能能高很多。使用Int类型的ID作为主键。UUID不作为主键,而仅作为数据同步的标记字段被使用。

在mysql中可以把UUID作为逻辑主键,物理主键依然使用自增ID

1、UUID定义

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

2、UUID优点

1) 能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。

2) 保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。

3) 在oracle做数据迁移的时候不会因为表的sequence不连续而出现问题

3、UUID缺点

1) 比较占地方,和INT类型相比,存储一个UUID要花费更多的空间。

2) 使用UUID后,URL显得冗长,不够友好。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8682360.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存