首页
学习
活动
专区
圈层
工具
发布

全局唯一ID--UUID介绍、JAVA中UUID的使用

但这个唯一性是有限的,只在特定的范围内才能得到保证,这和UUID的类型有关(参见UUID的版本)。 UUID的版本UUID具有多个版本,每个版本的算法不同,应用范围也不同。...这个版本的UUID在实际中较少用到。 UUID Version 3:基于名字的UUID(MD5)基于名字的UUID通过计算名字和名字空间的MD5散列值得到。...这个版本的UUID保证了:相同名字空间中不同名字生成的UUID的唯一性;不同名字空间中的UUID的唯一性;相同名字空间中相同名字的UUID重复生成是相同的。...UUID Version 4:随机UUID根据随机数,或者伪随机数生成UUID。...nameUUIDFromBytes(byte[])方法, 可以得知 其内部使用的是算法版本分别是4、3; 因为我们更趋向于使用版本3、5的算法实现, 所以在实际生产中,推荐使用 nameUUIDFromBytes方法将自身的唯一id

2.7K20

为什么MySQL不推荐使用uuid或者雪花id作为主键?

p=5090 前言 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment...一、mysql和程序实例 1.1.要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id的索引结构对比 2.1.使用自增id的内部结构 ? 自增的主键的值是顺序的,所以Innodb把每一条记录都存储在一条记录的后面。...的生成策略在大数据量的数据插入表现,然后分析了id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。

4.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql 自增id和UUID做主键性能分析,及最优方案

    按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字 UUID由以下几部分的组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个...(2).但是在我们实际到项目中会碰到问题,历史数据表的主键id会与数据表的id重复,两张自增id做主键的表合并时,id一定会有冲突,但如果各自的id还关联了其他表,这就很不好操作。...(3).如果使用UUID,生成的ID不仅是表独立的,而且是库独立的。对以后的数据操作很有好处,可以说一劳永逸。 2.UUID优缺点 缺点: 1....(2).对于InnoDB的主索引,数据会按照主键进行排序,由于UUID的无序性,InnoDB会产生巨大的IO压力,此时不适合使用UUID做物理主键,可以把它作为逻辑主键,物理主键依然使用自增ID。...4.如果非要使用uuid做主键,下面是小建议: 如果是主从即M-S模式,最好是不使用mysql自带函数uuid来生成唯一主键,因为主表生成的uuid要再关联从表时,需要再去数据库查出这个uuid,需要多进行一次数据库交互

    9K20

    mysql java uuid_Java生成UUID 与 MySQL数据库如何生成uuid数据

    去掉“-”符号 return uuid.replaceAll(“-“, “”); } 二、MySQL数据库如何批量插入不重复uuid数据 第一步:先把需要查询的数据列出来select UUID(), a.Code...insert into 表名(id,code,name,continent) (select UUID(), a.Code, a.Name,a.Continent from 表名1 a, 表名2 b...where a.Code =b.CountryCode ); 第三步:更新UUID,将“-”替换掉 update TEMPTABLEset id =select REPLACE(id,’-‘,”) 三、...生成UUID /*只能生成一条*/SELECT REPLACE(UUID(),’-‘,”) AS id;/*在数据库中找一张数据多的表执行生成多条*/SELECT (REPLACE(UUID(),’-‘..., ”)) id FROM 表名 LIMIT (条数50); 四、sqlServer 生成UUID方法 select newId(); 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    5.6K30

    使用雪花id或uuid作为Mysql主键,被老板怼了一顿!

    和自增id的索引结构对比 2.1.使用自增id的内部结构 2.2.使用uuid的索引内部结构 2.3.使用自增id的缺点 三、总结 ?...---- 前言 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment...本篇博客的目录 mysql程序实例 使用uuid和自增id的索引结构对比 总结 一、mysql和程序实例 1.1.要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid...的生成策略在大数据量的数据插入表现,然后分析了id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。 ---- ----

    2.5K10

    使用雪花id或uuid作为MySQL主键,被老板怼了一顿!

    磊哥,前几天在做项目demo的时候,使用雪花id或uuid作为Mysql主键,被老板怼了一顿!...一、MySQL和程序实例 1.1 要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id的索引结构对比 2.1 使用自增id的内部结构 ? 自增的主键的值是顺序的,所以Innodb把每一条记录都存储在一条记录的后面。...的生成策略在大数据量的数据插入表现,然后分析了id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。

    9.7K32

    使用雪花id或uuid作为Mysql主键,被老板怼了一顿!

    来源:cnblogs.com/wyq178/p/12548864.html ---- 前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一)...,而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?...一、mysql和程序实例 1.1 要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机...的生成策略在大数据量的数据插入表现,然后分析了id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。

    1.4K20

    使用雪花id或uuid作为Mysql主键,被老板怼了一顿!

    前言: 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用...# mysql和程序实例 1.要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key...带着疑问,我们来探讨一下这个问题: # 使用uuid和自增id的索引结构对比 1.使用自增id的内部结构 自增的主键的值是顺序的,所以Innodb把每一条记录都存储在一条记录的后面。...的生成策略在大数据量的数据插入表现,然后分析了id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。

    1.9K10

    使用雪花 id 或 uuid 作为 MySQL 主键,被老板怼了一顿!

    javaxks.com](https://www.javaxks.com) > 作者 : Yrion ,链接: cnblogs.com/wyq178/p/12548864.html ### 一、MySQL...和程序实例 **1.1 要说明这个问题, 我们首先来建立三张表** 分别是`user_auto_key,user_uuid`,`user_random_key`, 分别表示自动增长的主键, uuid...带着疑问, 我们来探讨一下这个问题: ### 二、使用 uuid 和自增 id 的索引结构对比 **2.1 使用自增 id 的内部结构** !...的生成策略在大数据量的数据插入表现,然后分析了 id 的机制不同在 mysql 的索引结构以及优缺点,深入的解释了为何 uuid 和随机不重复 id 在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据 mysql 的官方推荐最好使用自增 id,mysql 博大精深,内部还有很多值得优化的点需要我们学习。

    3.2K00

    主键的选择:自增id?UUID?雪花算法?

    二、UUID生成主键(32位16进制) uuid:UUID(Universally Unique Identifier,通用唯一识别码)是一种软件建构的标准,用于在分布式计算环境中为元素提供唯一的标识信息...UUID共占128位,分为五段,它具有唯一性、全局性、不变性等特点。...uuid生成主键,需要将testId改成String类型  而在数据库建表的时候testId 不能用bigint了 而是用char(32)就可以了 生成的uuid是这样的 c37da8074d52022661db24bf931990af...它的设计目标是在分布式系统中生成ID,保证ID的唯一性、有序性和趋势递增。雪花算法的核心思想是将一个64位的ID分成多个部分,分别表示不同的信息。...索引性能:由于UUID相对较大,使用UUID作为主键会导致索引变得更大,从而影响查询性能。特别是在执行范围查询或JOIN操作时,性能下降可能会更加明显。

    61010

    分布式ID系列(2)——UUID适合做分布式ID吗

    UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字...UUID的底层是由一组32位数的16进制数字构成,是故 UUID 理论上的总数为[1565060542.png] ,约等于[1565060554.png],也就是说若每纳秒产生1百万个 UUID,要花100...的值是:24e6f66b3dfb4aba8e3e3801d3327e08 UUID是否适合做分布式id: 如果需求是只保证唯一性,那么UUID也是可以使用的,但是按照上面的分布式id的要求, UUID其实是不能做成分布式...id的,原因如下: 首先分布式id一般都会作为主键,但是安装mysql官方推荐主键要尽量越短越好,UUID每一个都很长,所以不是很推荐 既然分布式id是主键,然后主键是包含索引的,然后mysql的索引是通过...那么UUID可以用到哪些方面呢 比如阿里云每一条短信发送的唯一id,这个是可以的,比如从阿里云官网截图所示: [1565060572.png]

    2K40

    MySQL中存储UUID的最佳实践

    在MySQL中有一个UUID () 函数,通常用UUID做唯一标识,需要在数据库中进行存储。使用此函数可以让MySQL生成一个UUID值,并以VARCHAR(36)类型的可读形式返回。...但是对于像MySQL的InnoDB存储引擎来说,使用UUID作为主键(PRIMARY KEY)会带来一些问题。 1、问题阐述 问题一:UUID的长度问题 UUID的长度为36个字符。...如果这样的UUID作为主键的话,不仅会是主键的尺寸很大,而且会使二级索引的尺寸变大,原因是MySQL中的二级索引的value存的是PRIMARY KEY。...由于主键和二级索引的尺寸很大,所以不利于在内存中操作 问题二:UUID的格式问题 MySQL的UUID ()使用的是version 1的UUID,该类型的UUID的特点是基于时间,它是一个128位的数字...那么我们可以使用虚拟列(MySQL5.7的新特性,虚拟列不占用存储空间)来存放文本形式的UUID。 然后,还有如何巧妙地重新排列二进制形式的字节的问题。

    10.5K30

    主键优化:自增ID与UUID的适用场景对比

    作为开发者,我们常面临两种主流方案:自增ID(如MySQL的AUTO_INCREMENT)和UUID(通用唯一标识符)。...工作原理通过数据库内置序列(如MySQL的AUTO_INCREMENT属性)实现单调递增,典型用法: CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT...范围查询需全索引扫描,违背局部性原理 四、实战压测:性能与扩展性对决通过基准测试揭示关键差异(测试环境:MySQL 8.0,SSD存储,100万数据量):场景 自增ID耗时UUID耗时性能差距单条插入...分布式场景反转:undefined 当分片数≥8时,UUID的插入吞吐量反超自增ID(避免中心化ID生成器的网络开销)关键维度说明: 扩展性需求: 单库架构:优先自增ID 多活数据库:强制UUID.../ULID 性能容忍度: 读密集型:自增ID优势明显 异步写场景:可接受UUID代价 安全要求: 对外API:必须UUID防止爬取 内部系统:自增ID更高效 存储成本: 海量日志:慎用UUID

    55711

    Mysql 8.0 更好的支持了 UUID

    定义了5个版本,MySQL 实现的是版本1,由 时间戳、UUID版本、MAC地址构成 好处 MySQL 中使用 UUID 是对 AUTO_INCREMENT PRIMARY KEY的一个很好的替代,有如下好处...keys 在不同 表、库、服务器 中都是唯一的 安全性更好,很难猜 可以离线生成 可以简化数据库复制 不足 但也有不好的地方: 增加了存储空间 增加了问题调试的难度 有性能问题,因为长度更长,并且无序 MySQL...8.0 的处理方法 MySQL8.0 新增了3个函数: UUID_TO_BIN BIN_TO_UUID IS_UUID 通过这3个函数,使我们可以更方便的应用UUID,并且是对上面提到的几点不足的一个解决方案...t (id binary(16) PRIMARY KEY); 插入 INSERT INTO t VALUES(UUID_TO_BIN(UUID())); 查询 SELECT BIN_TO_UUID(...id) FROM t; +--------------------------------------+ | BIN_TO_UUID(id); | +----------------------

    5.8K110

    为啥不能用uuid做MySQL的主键 ?

    在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,...本篇博客的目录 mysql程序实例 使用uuid和自增id的索引结构对比 总结 一、mysql和程序实例 1.1.要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id的索引结构对比 2.1.使用自增id的内部结构 image.png 自增的主键的值是顺序的,所以Innodb把每一条记录都存储在一条记录的后面...的生成策略在大数据量的数据插入表现,然后分析了id的机制不同在mysql的索引结构以及优缺点,深入的解释了为何uuid和随机不重复id在数据插入中的性能损耗,详细的解释了这个问题。...在实际的开发中还是根据mysql的官方推荐最好使用自增id,mysql博大精深,内部还有很多值得优化的点需要我们学习。

    4.4K20
    领券