MySQL生成重复的UUID

时间:2016-03-29 22:54:21

标签: mysql

我使用Mysql UUID()函数生成唯一ID。

但是,我遇到过生成重复UUID的情况。我的印象是,如果条目是在不同的时间完成的,那就不会发生这种情况。

在这种特殊情况下,插入查询每隔一天运行一次,但它们已经复制了UUID。

我无法将字段索引设置为 unique 以确保唯一性,因此,如果发生这种情况,我该如何确保UUID生成唯一ID?

2 个答案:

答案 0 :(得分:0)

你可以很容易地在SQL中创建一个循环来获取UUID,检查表以确保它不存在并使用它并打破循环或再次循环以获得新的UUID。 MySQL的早期版本中存在一些错误导致重复的UUID被生成但是可能性很小,比如170亿分之一,除非发生其他事情,否则你将获得重复。

答案 1 :(得分:0)

我用随机哈希生成器遇到了这个问题。问题的根源在于他们不记得他们过去创造的东西。我不得不添加JS代码来解决2个问题。

1.具有太多数字或字母的哈希值聚集在一起。我使用正则表达式来跟踪这个问题。这可以创建“谐波”,并使用此散列更容易破坏任何代码。

2。第二个问题是你的问题,我想出的答案是一个记录所有使用的哈希值的文本表。如果出现任何一个问题(它现在扫描表以查看它是否在之前创建了该哈希值),则会发生一个触发器,它再次运行程序,直到两个错误都没有发生。

它将继续运行直到答案是唯一的,最多需要几毫秒。

随着时间的推移,'二手'UUID库将变得庞大,但需要一百万个条目才能严重减慢它的速度。那么它取决于你可以投入多少CPU'马力'。拥有有效的UUID仍然值得延迟几秒钟。