欢迎访问我的博客shammgodyoung

转自丁奇,原文:http://dinglin.iteye.com/blog/1487537

有同学问到MySQL的uuid这个函数。简要介绍一下。

用法

简单看到,这个值,每次执行都是不同的。

生成规则

第1 2 3 段是与时间有关的。

time_low、time_mid、time_high_and_version转成16进制后分别对应第1 2 3段。这个时间是从1582-10-15 00:00:00.00到当前时间的100ns值。(实际上系统只能取到精确us,再乘以10)。所以你短时间连续执行的话,比较可能只有第一个值在改,实际上1 2 3都可能会改变。

第4段是你启动这个MySQL后第一次执行select uuid()时的随机数,每次重启会改变。

第5段是mac值转过来的,同一个机器多实例的一般相同。如果mac值获取不到,则是一个随机值。

所以这个值可以认为是每次执行都不相同。并且不同实例之间也只有极微小概率重复。

Uuid_short

与uuid返回固定长度字符串不同, uuid_short的返回值是一个unsigned long long类型。MySQL启动后第一次执行的值是通过server_id << 56 + server_start_time << 24来初始化。server_start_time单位是秒。 之后每次执行都加1。

由于每次加1都会加全局mutex锁,因此多线程安全,可以当作sequence来用,只是初始值有点大。

Sequence

         MySQL没有Oracle那样的sequence,在不是很精确的情况下,可以考虑上面提到的uuid_short。有一些不足:

1、初始值太大,无法重设

2、存在一个问题是每次重启后第一次执行的值不是重启前的那个值+1

3、而且如果重启在1s内完成,可能出现不单调递增(虽然这个可能性微乎其微)。

要满足上面的需求,可以考虑用udf实现。

UUID和UUID_SHORT相关推荐

  1. MySQL中的uuid()和uuid_short()函数

    在之前项目中,数据库生成UUID主键一般会用Java调用函数,最近发现在MySQL也有自带的uuid函数,分别是uuid()和uuid_short(),现对这两个函数进行演示和说明. 在 MySQL ...

  2. mysql uuid_short 为什么不存在_MySQL内置函数uuid和uuid_short

    有同学问到MySQL的uuid这个函数.简要介绍一下. 用法 简单看到,这个值,每次执行都是不同的. 生成规则 第1 2 3 段是与时间有关的. time_low.time_mid.time_high ...

  3. mysql的sql经典写法收录

    1.表关联更新: 1 2 3 select a.`user`,a.`host`,b.db from mysql.`user` as a   left join mysql.db as b on (a. ...

  4. mysql 复制_MySQL的复制功能

    什么是复制功能? MySQL 的复制功能是将备份的数据移动到其他服务器的功能,通过简单的设定即可使用 主→从(master ->slave)架构. 主服务器上发生数据变更,变更内容传送到从服务器 ...

  5. Mysql-12章-函数和操作符 (翻译+理解)

    内置函数 12.1 函数和操作符一览 12.2表达式计算中的类型转换 12.3 操作符 12.3.1 操作符优先顺序 12.3.2 比较方法和操作符 12.3.3 逻辑运算符 12.3.4 赋值运算符 ...

  6. 7.3. UUID()

    SELECT UUID(),LENGTH(UUID()),UUID_SHORT(), LENGTH(UUID_SHORT()); 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作 ...

  7. mysql int做主键_mysql5.5 uuid做主键与int做主键的性能实测

    偶然的机会,得知mysql主键的类型采用 varchar 存UUID 的查询性能没有int型做主键好.网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威性. ...

  8. mysql gtid寻找位置_【MySQL】UUID与GTID以及如何根据GTID找寻filename和position

    Open Group于1997年10月发布,UUID遵从此协议. UUID被设计成一个在空间和时间上的唯一值.两次调用的UUID将产生两个不同的值,即使这些调用是在两个不连接的,彼此独立的计算机. 由 ...

  9. uuid表示时间的部分_技术译文 | UUID 很火但性能不佳?今天我们细聊一聊

    作者:Yves Trudeau Yves 是 Percona 的首席架构师,专门研究分布式技术,例如 MySQL Cluster,Pacemaker 和 XtraDB cluster.他以前是 MyS ...

最新文章

  1. ASP.NET协作应用集成到trsids身份验证服务器的开发流程
  2. vue 中实现异步加载模块
  3. C# 基础知识 (四).C#简介及托管代码
  4. 思维模型篇:数据分析必知必会的两个原则
  5. 高薪必备|Redis 基础、高级特性与性能调优
  6. 在串口输入input keyevent发送按键值给机器
  7. MySQL MHA详解(二)——实战配置
  8. 软件测试自学指南---从入门到精通V1.0
  9. python源码剖析_《Python源码剖析》很值很强大!
  10. 如鹏网.Net基础2 第六章:MYSQL
  11. 指纹识别技术相比于其它生物识别技术,有哪些优缺点?
  12. Nginx模块开发之http handler实现流量统计(进阶篇)
  13. Android基础整合项目之节日群发助手(三)
  14. 免费的中文深度学习全书:《深度学习理论与实战:提高篇》
  15. 一个有趣的 5 X 5 方阵一笔画问题
  16. appinventor java,(1) AppInventor高级组件之JavaReflector系列教程 概述
  17. TCP MSS PMTU PING
  18. python从入门到实践外星人入侵,GitHub - tryturned/alien-invasion: Python 编程从入门到实践项目之外星人入侵...
  19. 如何做SEO如何优化排名教程
  20. Zigbee CC2530 单片机存储 IAR查看内存

热门文章

  1. Premiere Pro之时间轴面板(二)
  2. matlab p图,【MATLAB】P图神器,初露锋芒:第一周作业(剧透)
  3. C语言_习题4-5 换硬币
  4. win10家庭版如何修改用户名对应的用户文件夹下的用户文件名字(中文该成英文字符)
  5. 再捐1亿元种树治沙:蚂蚁集团持续七年支持内蒙古生态治理
  6. ArcMap-network analyst
  7. python上方菜单栏不见了_Jupyter Notebook开始菜单栏Anaconda下消失的问题解决方法
  8. matlab 不显示图中坐标轴(不显示x、y、z轴)
  9. 全国计算机等级考试Python二级知识点_1
  10. 【Java基础系列】基本数据类型及包装类