MySQL中生成唯一值性质的工具UUID()和自增序列
来源:互联网 发布:http dev.mysql.com 编辑:程序博客网 时间:2024/06/05 08:48
同:都可以生成唯一值;
异: UUID()是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯一值,且需要搭配使其为唯一的主键或唯一索引;
实现方式不一样,UUID()是随机+规则组合而成的,而自增序列是控制一个值逐步增长的;
UUID()产生的是字符串类型值,固定长度为:36个字符,而自增序列产生的是整数类型值,长度由字段定义属性决定;UUID()生成时间、空间上唯一的值表现在附件的图片;同一查询语句[select uuid(),uuid(),length(uuid()),char_length(uuid())]中的两个uuid()得到的值都是不同的;
从上面的执行结果部分的信息看:
l 同一个SQL语句中,多处调用UUID()函数得到的值不相同;
l 得到的随机值由5个部分组成,且分隔符位为:中划线;
l 多次调用或执行得到的后2组值相同,若把mysqld服务器关闭,重新启动之后,会发现第四组的组与未重启前的值发生变化,然后一直不变化,只要重新启动mysqld服务就会发生变化。另外,对于同一台机器,第五组值始终不会发生变化;
l 字符个数为:36,占字节数为:36(注:系统默认字符集编码:utf8);
针对UUID产生的值组成部分,作如下解说:
l 前三组值是时间戳换算过来的;
l 第四组值是暂时性保持时间戳的唯一性。例如,使用夏令时;
l 第五组值是一个IEE 802的节点标识值,它是空间上唯一的。若后者不可用,则用一个随机数字替换。假如主机没有网卡,或者我们不知道如何在某系统下获得机器地址,则空间唯一性就不能得到保证,即使这杨,出现重复值的机率还是非常小的。
后续加注:
UUID()函数产生的值,并不适合作为InnoDB引擎表的主键,至于详细的原因,请阅读文章InnoDB引擎表的主键选型(http://www.mysqlops.com/2011/09/10/innodb-primary.html)。
- MySQL中生成唯一值性质的工具UUID()和自增序列
- Java中生成的UUID(全局唯一标识符-----(唯一)-------)
- Python中生成唯一码(uuid的使用)
- MySQL UUID函数和自增序列详解
- php生成UUID唯一序列的代码示例
- Python中生成唯一ID的库——UUID
- mybatis oracle 序列自增与 uuid生成
- 如何生成UUID类性的唯一值
- Javascript生成全局唯一标识符(GUID,UUID)的方法
- Javascript生成全局唯一标识符(GUID,UUID)的方法
- 生成唯一的字符串算法---UUID
- 利用Java的UUID生成唯一标识
- UUID通用唯一识别码的生成
- java生成唯一序列号,UUID的应用
- java生成全球唯一的UUID
- mysql 中创建自增的序列(Sequence)
- UUID生成唯一订单号
- UUID和自增列的优缺点
- CCF 201403-3 100分 我参考别人100分
- instnanceOf运算符
- 鼠标运动事件和鼠标事件适配器
- 使用Xcode7打包ipa文件出现提示错误
- 【CDP-云设计模式】第8章,2.优先级队列模式(Priority Queue Pattern)
- MySQL中生成唯一值性质的工具UUID()和自增序列
- centos开启关闭防火墙
- sql server 2012版 学习笔记(基础版一)
- Android中的IPC方式
- Swift通过tabbar搭建主界面
- java内存空间详解
- 题目1519:合并两个排序的链表 九度 本地通过 参考别人的
- APK文件名不得有空格
- hdu 2203 亲和串