首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL UUID()何时不是唯一的?

问MySQL UUID()何时不是唯一的?
EN

Stack Overflow用户
提问于 2012-03-13 15:24:52
回答 2查看 9.5K关注 0票数 3

如果MySQL生成的UUID()不是唯一的,会发生什么?如果这是针对作为主键的列,MySQL是否会出错,或者是否尝试生成另一个UUID,直到找到真正唯一的UUID?

EN

回答 2

Stack Overflow用户

发布于 2012-03-13 15:29:26

好吧,如果您调用UUID()两次并得到相同的结果,那么最有问题的事情将是“内容被破坏”(tm)。据我所知,它应该是独一无二的,而且应该一直如此。

将不会有“重新生成”代码可用:该函数被设计为即使在计算机之间也创建唯一的密钥,那么它如何知道其结果不是唯一的?

来自http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

UUID被设计为一个在空间和时间上全局唯一的数字。对UUID()的两次调用预计会生成两个不同的值,即使这些调用是在两台彼此不连接的独立计算机上执行的。

也许你指的是别的什么?例如,如果您使用UUID()生成一些应该是唯一的内容(如主键或唯一字段等),并且您以前添加了相同的数字(例如,您调用了UUID()一次,但插入了两次内容),那么当您将非唯一内容添加到一个应该是唯一的位置时,您将得到默认错误。你不会得到一个新的。

一些关于独特性的阅读材料:

  1. 手册。阅读它,以及它如何使用各个部分来生成主键。:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
  2. Check该手册上的链接以获取实际定义(但这很难读,所以您可以跳过这一部分):https://www2.opengroup.org/ogsys/jsp/publications/PublicationDetails.jsp?catalogno=c706
  3. Some这里更容易理解关于重复概率的度量:http://en.wikipedia.org/wiki/Universally_unique_identifier
  4. there也是mysql站点(论坛等)上的一些讨论,关于使用它作为主键,但由于我正在工作,时间不多,您需要自己搜索它:)
票数 5
EN

Stack Overflow用户

发布于 2013-06-29 03:30:09

MAC UUID()基于MySQL地址、版本和时间戳。如果单个服务器上的两个线程使用相同的时间戳(完全相同的微秒)进行调用,则预期会出现相同的结果。对于单个线程,这是不可能的,因为在4 4Ghz处理器上,调用将被分隔几微秒。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9679860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档