MySQL UUID函数的详解

MySQL高级数据类型之:`MySQL`的`UUID`:其在`MySQL`中的`BIN`存储优化和性能考量。 UUID (Universally Unique Identifier) 或 GUID (Globally Unique Identifier) 是一个 128 位的数字,旨在确保在时间和空间上的唯一性。 阅读详情

MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:

l  都可以实现生成唯一值的功能;

l  UUID是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯

一值,且需要搭配使其为唯一的主键或唯一索引;

l  实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增长的;

l  UUID产生的是字符串类型值,固定长度为:36个字符,而自增序列产生的是整数类型值,长度由字段定义属性决定;

 

接下来,详细讲解下UUID()函数产生的值:

oot@localhost : (none) 06:09:40> SELECT UUID(),UUID(),LENGTH(UUID()),CHAR_LENGTH(UUID())G

*************************** 1. row ***************************

UUID(): de7ee638-4322-11e0-85ab-842b2b4a7e75

UUID(): de7ee642-4322-11e0-85ab-842b2b4a7e75

LENGTH(UUID()): 36

CHAR_LENGTH(UUID()): 36

1 row in set (0.00 sec)

 

从上面的执行结果部分的信息看:

l  同一个SQL语句中,多处调用UUID()函数得到的值不相同;

l  得到的随机值由5个部分组成,且分隔符位为:中划线;

l  多次调用或执行得到的后2组值相同,若把mysqld服务器关闭,重新启动之后,会发现第四组的组与未重启前的值发生变化,然后一直不变化,只要重新启动mysqld服务就会发生变化。另外,对于同一台机器,第五组值始终不会发生变化;

l  字符个数为:36,占字节数为:36(注:系统默认字符集编码:utf8);

 

针对UUID产生的值组成部分,作如下解说:

l  前三组值是时间戳换算过来的;

l  第四组值是暂时性保持时间戳的唯一性。例如,使用夏令时;

l  第五组值是一个IEE 802的节点标识值,它是空间上唯一的。若后者不可用,则用一个随机数字替换。假如主机没有网卡,或者我们不知道如何在某系统下获得机器地址,则空间唯一性就不能得到保证,即使这杨,出现重复值的机率还是非常小的。

 

UUID函数对复制的支持:

UUID函数属于不确定性函数,为此不支持MySQL 复制的STATEMENT模式,但是支持MIXED、ROW二种模式,大家可以设置2组测试模式,以5.1.系列版本为例。

测试基于命令行模式复制:

tx_isolation = REPEATABLE-READ

binlog_format = STATEMENT

 

测试基于命令行/混合模式复制:

tx_isolation = REPEATABLE-READ

binlog_format = MIXED  OR ROW

 

在主服务器上执行同一个SQL语句:

INSERT INTO  test_uuid(username) VALUES(UUID());

然后再比对主从服务器上表中存储的值,会发现基于命令行模式的:主从不一致,基于行/混合模式的:主从数据时一致;

 

建议:在复制模式下,需要用到UUID()函数,则一定要使用基于行/混合模式复制方式。

名词解释:

对于输入参数相同,且同一时间执行或一个SQL中多处调用,而得到不同值得函数,我们就称其为:不确定性函数。

备注:

在MySQL 5.1.*及更高版本有一个变种的UUID()函数,名称:UUID_SHORT(),生成一个64位无符号的整数,例如:

root@localhost : (none) 02:46:42> SELECT UUID_SHORT()G

*************************** 1. row ***************************

UUID_SHORT(): 6218676250261585921

1 row in set (0.00 sec)

 

后续加注:

UUID()函数产生的值,并不适合作为InnoDB引擎表的主键,至于详细的原因,请阅读文章InnoDB引擎表的主键选型。

MySQL UUID函数的使用指南 MySQL的UUID函数提供了方便的方法来生成符合标准的UUID,并可以在插入、查询和主键设置等操作中使用。UUID(通用唯一标识符)是一种广泛应用于数据库系统中的标识符,它可以确保在不同系统、不同时间、不同数据库中生成的标识符是唯一的。MySQL提供了UUID函数,可以生成符合标准的UUID。UUID函数还可以用于生成主键列的值。可以在INSERT语句中使用UUID函数来插入一个新的UUID值。UUID函数还可以用于根据UUID值进行查询操作。使用UUID函数可以生成一个新的UUID。 阅读详情

相关推荐

【顾邦小讲堂】第二十四期 电源环路测试从入门到精髓:一文掌握环路测试原理与电压注入点选择依据

电源环路测试是评估开关电源、线性电源等闭环系统稳定性的核心手段,直接关系到电源的稳定性、输出精度、动态响应、抗干扰能力甚至可靠性

GBupupup的博客 2111

[转载]MySQL UUID() 函数

目录 目录 一 引子 二 MySQL UUID() 函数 三 复制中的 UUID()四 UUID_SHORT() 函数 3.1 实验环境介绍 3.2 搭建复制环境 3.3 基于 STATEMENT 模式 3.4 基于 MIXED 模式 3.5 基于 ROW 模式 五 小结 六 Ref 文/温国兵 一 引子 在 MySQL 中,可以有如下几种途径实...

weixin_34291004的博客 541

硬件基础(4):(6)高精度ADC设计中模拟地与数字地的划分与连接

在实际 PCB 设计中,**接地与布线**对于获得干净的参考电压和高精度 ADC 测量至关重要。下面详细阐述**如何在硬件层面减少数字噪声耦合到模拟电路、保障参考电压的稳定性**。

FCZlll的博客 2645

mysql uuid()函数如何使用_MySQL UUID函数的详解

MySQL UUID函数的详解MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:l 都可以实现生成唯一值的功能;l UUID是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯一值,且需要搭配使其为唯一的主键或唯一索引;l 实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增...

weixin_36310396的博客 1万+

【架构师面试-缓存与搜索-1】-缓存与缓存置换策略源码实现

1:什么是缓存 缓存:加速数据访问的存储,降低延迟(latency),提升吞吐量(Throughput)的利器。 1:缓存演进历史 1. 查库 2. ConcurrentHashMap 3. LRU 4. Guava Cache 5. 分布式缓存(redis,MemCache) 6. 多级缓存 2:在什么地方加缓存 缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢? 举个栗子:假设一个网站,需要提高性能,缓存可以放在浏览器,可以放

chongfa2008的博客 6438

OpenOCD入门到精通:第28章 综合实战:RISC-V 调试

RISC-V调试实战摘要 本文介绍了RISC-V调试规范及其在OpenOCD中的实现。主要内容包括: RISC-V Debug规范的两个版本(0.11和0.13)及其差异,OpenOCD通过自动检测DTMCS寄存器版本号选择对应驱动实现。 RISC-V调试架构的分层设计,包含DTM、Debug Module、Program Buffer等核心组件,以及三种内存访问方式(progbuf、sysbus、abstract)。 以GD32VF103为例的实战调试配置,包括硬件连接、OpenOCD配置文件编写和GDB

从事嵌入式linux android驱动开发,拥有全栈能力 282

MySQL生成UUID

MySQL生成UUID UUID函数 在MySQL中,可以用uuid()函数来生成一个UUID,如下图: replace函数 默认生成的uuid含有’-’,我们可以使用replace函数替换掉’-’,SQL如下: select replace(uuid(),"-","") as uuid; 结果如下: Insert语句中使用UUID 如果一个表中id字段使用uuid来作为主键,那我们可以使用下面的语句来插入数据: INSERT INTO t_inventive_principle (id,code_num,

qq_41353397的博客 2万+

避坑指南:新手爬百度图片3个致命错,改完批量保存本地(亲测有效)

新手爬百度图片的核心是“绕开静态HTML,抓准API接口+处理反爬+提取原图”,改完本文提到的3个核心错,就能稳定批量保存高清图片。这套思路可复用在其他图片网站(如必应图片、360图片),只需修改API接口和参数即可。如果想进一步优化,可添加代理IP池、多线程下载(新手不建议,容易触发反爬)、图片去重等功能!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1586

mysql 中uuid函数

一、uuid介绍 在 MySQL 中,可以有如下几种途径实现唯一值: 自增序列 UUID() 函数 程序自定义 UUID 基于 16 进制,由 32 位小写的 16 进制数字组成,如下: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 比如123e4567-e89b-12d3-a456-426655440000就是一个典型的 UUID。 MyS...

expect521的博客 1万+

ERROR: Ignored the following yanked versions: 0.8.3, 0.10.19.dev18 的解决办法

关于这个问题,博主是在进行项目中的python依赖包安装的时候遇见的,遇到的异常:关于这个问题,是在。

Spring Boot-Common On With You 643

本地生成无限量的AI图像和视频——无需网络,无限制,本地人工智能图像和视频生成的实用指南

我们将使用ComfyUI,这是一个功能强大的基于节点的 AI 图像和视频生成可视化界面。如果您是 ComfyUI 的新手,请不要担心。ComfyUI是什么?ComfyUI 是一款可视化工具,可让您在自己的计算机上生成 AI 图像和视频。您无需一次性理解所有内容。在本指南中,我们将从现成的工作流程入手,逐步帮助您建立信心。乍一看,内容似乎很庞杂——但本指南将着重于:-简单的工作流程-预构建示例-最少的配置我想向你展示使用这个工具最简单的工作流程。

iCloudEnd的博客 1801

mysql uuid_MySQL UUID函数的详解

MySQL UUID函数的详解MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:l 都可以实现生成唯一值的功能;l UUID是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯一值,且需要搭配使其为唯一的主键或唯一索引;l 实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增...

weixin_39997696的博客 446

【异常】‘build.plugins.plugin.version‘ for org.apache.maven.plugins:maven-resources-plugin is missing

maven-compiler-plugin 插件版本信息没有指定导致了错误提示如下字面意思就是没有指定版本信息。

奶爸的编程之路,也就一周冷个三天 4599

mysql字段uuid_MySQL UUID函数的详解(转)

MySQL UUID函数的详解MySQL中可以有二类用于生成唯一值性质的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点:l 都可以实现生成唯一值的功能;l UUID是可以生成时间、空间上都独一无二的值;自增序列只能生成基于表内的唯一值,且需要搭配使其为唯一的主键或唯一索引;l 实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增...

weixin_34552525的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mysql uuid函数多个

函数相关视频讲解:微积分基本想法MySQL UUID函数及其应用 在数据库编程中,UUID(Universally Unique Identifier)是一种广泛使用的全局唯一标识符。MySQL数据库提供了多种生成UUID的方法,本文将介绍几种常见的UUID生成函数,并展示如何使用它们。 MySQL中的UUID生成函数 ...

weixin_32506761的博客 933

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql数据库uuid函数_[转载]MySQL UUID() 函数

目录文/温国兵一 引子在 MySQL 中,可以有如下几种途径实现唯一值:自增序列UUID() 函数程序自定义UUID 基于 16 进制,由 32 位小写的 16 进制数字组成,如下:aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee比如123e4567-e89b-12d3-a456-426655440000就是一个典型的 UUID。MySQL 实现了 UUID,并且提供 UU...

weixin_34902464的博客 1614

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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段是你启动这...

我真的睡不够 3882

MySQL UUID() 函数

目录 目录 一 引子 二 MySQL UUID() 函数 三 复制中的 UUID()四 UUID_SHORT() 函数 3.1 实验环境介绍 3.2 搭建复制环境 3.3 基于 STATEMENT 模式 3.4 基于 MIXED 模式 3.5 基于 ROW 模式   五 小结 六 Ref 文/温国兵 一 引子 在 MySQL 中,可以有如下几种途径实现唯一值...

chenyiming2010的博客 3500

MySQL函数UUID()产生重复键的说明

MySQL函数UUID()产生重复键的说明 一、原理分析 UID的全称是Universally Unique Identifier,中文为通用唯一识别码,它有5个版本,MySQL中的UUID()返回一个符合UUID版本1的值,版本1是timestamp + MAC 地址,如RFC 4122中所述(https://www.ietf.org/rfc/rfc4122.txt)。该值是一个128位的数字,表示为五个十六进制数的utf8字符串,格式为AAAAA-bbbb-cccc-dddd-EEEE。关于这一..

全栈软件工程师-陈征峰的博客 3537

MySQL UUID函数详解

MySQL中有二类用于生成唯一值的工具:UUID()函数和自增序列,那么二者有何区别呢?我们就此对比下各自的特性及异同点: 1. 都可以实现生成唯一值的功能. 2.UUID是可以生成时间、空间上都独一无二的值.自增序列只能生成表内的唯一值,且需要搭配使其为唯一的主键或唯一索引. 3. 实现方式不一样,UUID是随机+规则组合而成的,而自增序列是控制一个值逐步增长. 4.UUID产生的是字符

追梦丨星辰 3494
上一篇: MySQL数据库服务器逐渐变慢 该如何分析与解决
下一篇: 系统故障及软件质量
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值