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值获取不到,则是一个随机值。

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

JAVA中

UUID是jdk1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID. UUID是由一个十六位的数字组成,表现出来的形式例如 550E8400-E29B-11D4-A716-446655440000

下面是java代码生成uuid的例子(这个就比时间戳或者是随机数更加专业和靠谱了)

import java.util.UUID;

public static String getUUID() {   
        UUID uuid =UUID.randomUUID();   
        String str = uuid.toString();  
        // 去掉"-"符号   
        String temp = str.substring(0, 8) +str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) +str.substring(24);   
        returnstr+","+temp;   
    }

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内完成,可能出现不单调递增(虽然这个可能性微乎其微)。

lift is made up of small pleasures. 生活是由各种微小的幸福构成。 日积月累,就会产生意想不到的Miracles。 每一天的坚持,每一天的收获,我与你同在!!

MySQL中的uuid函数是什么东西相关推荐

  1. mysql over rank_sql - MySQL中的Rank函数

    sql - MySQL中的Rank函数 我需要找出客户的排名. 在这里,我为我的要求添加了相应的ANSI标准SQL查询. 请帮我转换为MySQL. SELECT RANK() OVER (PARTIT ...

  2. oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。

    迁移到mysql中会遇到函数迁移问题,我们可以自定义函数 DELIMITER $$ CREATE FUNCTION new_data_report.to_char(Intnumber int) RET ...

  3. MySQL中的组函数(聚合函数)

    MySQL中的组函数(聚合函数) 组函数操作行集,给出每组的结果.组函数不象单行函数,组函数对行的集合进行操 作,对每组给出一个结果.这些集合可能是整个表或者是表分成的组. 一.组函数与单行函数的区别 ...

  4. MySQL中的UNIX_TIMESTAMP函数使用总结

    转载自:http://www.cnblogs.com/hongfei/archive/2012/06/08/2541599.html MySQL中的UNIX_TIMESTAMP函数有两种类型供调用 1 ...

  5. Sql Server中实现Mysql中的group_concat函数效果

    Sql Server中实现Mysql中的group_concat函数效果 SELECT oi.*, stuff((select ','+convert(varchar(25), GuestName) ...

  6. oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数

    oracle中有decode函数,如下: select sum(decode(sex,'男',0,1)) 男生数 from school: 统计男生数目,含义为:decode()中sex字段为男时,用 ...

  7. php 加密保存mysql_PHP及MYSQL中字符串加密函数

    [IT168 服务器学院]我们在写PHP程序时经常要对用户的口令加密以确保安全,这时就要用到一些加密的函数.我总结了以下几种方法写出来供大家参考. 1.用MYSQL中的加密函数来加密:PASSWORD ...

  8. Mysql中常用的函数汇总

    Mysql中常用的函数汇总: 一.数学函数 abs(x) 返回x的绝对值 bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制) ceiling(x) 返回大于x的最小整数值 exp(x ...

  9. MySQL中常见的函数常见的问题

    2019独角兽企业重金招聘Python工程师标准>>> MySQL中常见的函数: if语句:格式:IF(Condition,A,B)说明:当Condition为TRUE时,返回A:当 ...

最新文章

  1. c++引用另一个类的方法_VlookUp函数使用方法,一张表引用另一张表的数据。
  2. 滴滴千万级ElasticSearch平台发展之路!
  3. [C++基础]001_iostream和iostream.h的区别
  4. java struts2 安全漏洞 devMode 简介
  5. 使用U盘在Mac机上装win8.1系统
  6. linux的rc的几种解释
  7. leetcode 225 用队列实现栈(JS)
  8. 一些开发点滴[java]
  9. Java四大函数式接口
  10. 02_常用正则表达式
  11. 面试官:为什么要尽量避免使用 IN 和 NOT IN?大部分人都会答错!
  12. [可视化-tableau]tableau的学习实践入门篇
  13. ubuntu ssh 登录日志_全球第一开源ERP Odoo操作手册 安装ssh服务和ssh客户端
  14. 收到“【有奖话题】虚拟空间“筑梦师”,谈谈微软虚拟化 ”礼物一个
  15. (1)算法设计与分析_算法设计思路
  16. 加油站收银系统 Java_加油站也能用收银系统吗?
  17. java运行vbs_如何在Java中执行VBS脚本?
  18. 游戏程序员如何正确的写简历
  19. Eigen优化及并行性能测试
  20. 开始讨厌现在这种生活

热门文章

  1. 东京奥组委公布奥运志愿者和城市志愿者昵称
  2. 以华为公司为例的我国业务流程管理实践研究
  3. 我知道的几个免费的API数据接口
  4. 软件测试之语音识别(ASR)测试
  5. mahout第一篇-----Mahout学习路线图
  6. 计算机数控编程特点,什么是数控图像编程系统有哪些特点
  7. Java分割PDF文件(itextpdf)
  8. 【情报百科】如何使用FOCA进行OSINT文档元数据分析?
  9. order by使用索引列排序时会失效吗?
  10. PhpStorm Unhandled exceptions错误解决