MySQL中的uuid函数是什么东西
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函数是什么东西相关推荐
- mysql over rank_sql - MySQL中的Rank函数
sql - MySQL中的Rank函数 我需要找出客户的排名. 在这里,我为我的要求添加了相应的ANSI标准SQL查询. 请帮我转换为MySQL. SELECT RANK() OVER (PARTIT ...
- oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。
迁移到mysql中会遇到函数迁移问题,我们可以自定义函数 DELIMITER $$ CREATE FUNCTION new_data_report.to_char(Intnumber int) RET ...
- MySQL中的组函数(聚合函数)
MySQL中的组函数(聚合函数) 组函数操作行集,给出每组的结果.组函数不象单行函数,组函数对行的集合进行操 作,对每组给出一个结果.这些集合可能是整个表或者是表分成的组. 一.组函数与单行函数的区别 ...
- MySQL中的UNIX_TIMESTAMP函数使用总结
转载自:http://www.cnblogs.com/hongfei/archive/2012/06/08/2541599.html MySQL中的UNIX_TIMESTAMP函数有两种类型供调用 1 ...
- Sql Server中实现Mysql中的group_concat函数效果
Sql Server中实现Mysql中的group_concat函数效果 SELECT oi.*, stuff((select ','+convert(varchar(25), GuestName) ...
- oracle实现mysql的if_oracle中decode函数 VS mysql中的if函数和case函数
oracle中有decode函数,如下: select sum(decode(sex,'男',0,1)) 男生数 from school: 统计男生数目,含义为:decode()中sex字段为男时,用 ...
- php 加密保存mysql_PHP及MYSQL中字符串加密函数
[IT168 服务器学院]我们在写PHP程序时经常要对用户的口令加密以确保安全,这时就要用到一些加密的函数.我总结了以下几种方法写出来供大家参考. 1.用MYSQL中的加密函数来加密:PASSWORD ...
- Mysql中常用的函数汇总
Mysql中常用的函数汇总: 一.数学函数 abs(x) 返回x的绝对值 bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制) ceiling(x) 返回大于x的最小整数值 exp(x ...
- MySQL中常见的函数常见的问题
2019独角兽企业重金招聘Python工程师标准>>> MySQL中常见的函数: if语句:格式:IF(Condition,A,B)说明:当Condition为TRUE时,返回A:当 ...
最新文章
- c++引用另一个类的方法_VlookUp函数使用方法,一张表引用另一张表的数据。
- 滴滴千万级ElasticSearch平台发展之路!
- [C++基础]001_iostream和iostream.h的区别
- java struts2 安全漏洞 devMode 简介
- 使用U盘在Mac机上装win8.1系统
- linux的rc的几种解释
- leetcode 225 用队列实现栈(JS)
- 一些开发点滴[java]
- Java四大函数式接口
- 02_常用正则表达式
- 面试官:为什么要尽量避免使用 IN 和 NOT IN?大部分人都会答错!
- [可视化-tableau]tableau的学习实践入门篇
- ubuntu ssh 登录日志_全球第一开源ERP Odoo操作手册 安装ssh服务和ssh客户端
- 收到“【有奖话题】虚拟空间“筑梦师”,谈谈微软虚拟化 ”礼物一个
- (1)算法设计与分析_算法设计思路
- 加油站收银系统 Java_加油站也能用收银系统吗?
- java运行vbs_如何在Java中执行VBS脚本?
- 游戏程序员如何正确的写简历
- Eigen优化及并行性能测试
- 开始讨厌现在这种生活