首页 > 数据库 >Mysql自增id、uuid、雪花算法id的比较

Mysql自增id、uuid、雪花算法id的比较

时间:2024-05-24 23:51:50浏览次数:34  
标签:自增 uuid 雪花 生成 效率 id 存储空间

MySQL自增id:

优点:
1.简单易用
​ MySQL自增id 由数据库自动生成。
2.效率高
自增id是按顺序递增的,可以提高插入和查询的效率。
3.索引效率高
自增id可以作为主键或索引列,提高查询效率。

缺点:
1.不适用于分布式系统
在分布式环境下,多个节点生成的自增id可能会冲突,需要额外的处理机制。

UUID

优点:
1.全球唯一性
UUID在全球范围内保证了唯一性,不会出现重复的情况。

缺点:
1.存储空间大
UUID占用的存储空间较大,通常为36个字符,如果作为主键,会占用更多的存储空间。
2.索引效率低
UUID是随机生成的,不具有顺序性,导致索引效率较低。
3.查询效率低
由于索引效率低,查询效率也会受到影响。

雪花算法唯一 id

雪花算法,可以生成唯一id,id 只包含数字, 长 64位。

雪花算法生成的 id,包括 符号位(1位),时间戳( 41位) ,数据中心ID (5位), 机器ID(5位), 序列号(12位)。。

符号位(1位):始终为数字 0, 留作未来使用,有可能被用来区分有符号数和无符号数。
时间戳( 41位) :纪元开始以来的毫秒数。
数据中心ID (5位) :最多可以有 32 个 ( 2^ 5) 机器。
序列号 (12位) :对于某个机器/进程, 每生成 一个ID,序列号就加1,这个数字每毫秒开始时都会被重置 为0。

雪花算法 id:

优点:
1.分布式环境下唯一性
雪花id在分布式系统中生成唯一的id,可以满足分布式环境下的需求。

缺点:
1.依赖于机器时钟
雪花id 的生成依赖于机器的时钟,如果时钟回拨或者时钟不同步,可能会导致生成的id不唯一。
2.存储空间较大
雪花id 占用的存储空间较大,通常为64位,如果作为主键,会占用更多的存储空间。
3.查询效率低
由于雪花id 是随机生成的,不具有顺序性,导致索引效率较低。

参考资料

https://blog.csdn.net/JSUITDLWXL/article/details/135644456

标签:自增,uuid,雪花,生成,效率,id,存储空间
From: https://www.cnblogs.com/expiator/p/18211865

相关文章

  • 玩赚Ai 智图师 Midjourney版:利用Midjourney实现AI创作及变现(10节课)
    欢迎来到本期玩赚AI智图师Midjourney版课程!在这里,我们将带领大家深入学习如何利用Midjourney这款强大的Ai创作工具,实现ai创作及变现。首先,我们将简要介绍Midjourney的功能和特点,然后通过10节课程,逐步带领大家掌握如何利用Midjourney制作各种精彩的AI作品,包括头像、插画、海报......
  • 基于Android Room的三层架构设计与实现
    题目:基于AndroidRoom的三层架构设计与实现摘要本文探讨了在Android应用中实现三层架构的设计思路与具体实现,采用Kotlin语言及AndroidStudio开发工具。通过对Room数据库的集成,展示了数据层、业务层和表现层的详细代码和实现原理。本文旨在为开发者提供一个清晰的参考示例,以......
  • Python中idle无法打开问题
    问题描述由于之前下载过python,但是没有开始学习,今天在开始学习之前修改了一下python文件夹的文件名,更改了环境变量里python路径,但是在通过搜索应用程序打开idle时没有反应解决方案由于修改了python的文件名,idle快捷方式里的起始和目标路径没有进行修改,导致没法通过快捷方式打......
  • 【go】【gin】【validator】
    @目录写在前面validatorinstallFields:Network:Strings:Format:Comparisons:Other:Aliases:validateregularexample参考资料基础/标准库/第三方库golang导航编程规范算法|面试项目写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将......
  • AI绘画基础:一件收藏!Midjourney五种优质关键词合集
    今天为大家分享5类高质量Midjourney提示词,包括野外产品场景图、卡通表情包、科技风芯片素材、可无缝拼接的图案等,一起来看看吧~MJ绘画提示词就像是那个及时雨,给你的创作之旅带来一丝清新的风!  自然类场景图 1提示词:Extremeclose-up,aflatmossystoneslab,......
  • 在AndroidStudio创建虚拟手机DUB-AI20
    1.DUB-AI20介绍        DUB-AL20是华为畅享9全网通机型。         华为畅享9采用基于Android8.1定制的EMUI8.2系统,最大的亮点是配置了1300万AI双摄、4000mAh大电池以及AI人脸识别功能,支持熄屏快拍、笑脸抓拍、声控拍照、手势拍照等特色的拍照功能,支持移......
  • 【Fireyer】一款Android平台环境检测应用
    Fireyer是为了校验我们的虚拟化环境构建是否存在缺陷,可以保障我们的每次更新的产品质量,提升开发效率。项目已开源:☞Github:https://www.github.com/iofomo/fireyer☜如果您也喜欢Fireyer,别忘了给我们点个星。1.说明fire+eyer=Fireyer(火眼),Fireyer项目是我们在做......
  • 理解Solidity 中的 tx.origin 和 msg.sender
    开发者需要了解在Solidity中tx.origin和msg.sender的区别。这两个全局变量经常被混淆,尽管它们之间有着根本的不同。虽然乍一看它们可能相似,但在交易的上下文中,tx.origin和msg.sender代表不同的地址。在这篇博客文章中,我们将深入探讨这些变量的含义。什么是tx.origin?在Soli......
  • Android Studio 常用快捷键(超实用!!!)
    AndroidStudio常用快捷键(超实用!!!) 快捷键又称为“热键”,多个按键的组合可以实现某些快速操作,例如Window中最常用的Ctrl+C和Ctrl+V,熟练使用快捷键可以大大提高开发效率并可以减少某些错误的发生。AndroidStudio也默认提供了众多快捷键方式供开发者调用,推荐使用AndroidStudio......
  • android中怎么将一个aar打包进另一个aar
    怎么将一个aar打包进另一个aar方法一、使用fat-aar插件,不过由于fat-aar插件较长时间未更新,导致无法支持最新的Android版本(已不推荐使用)第一步:在你的工程根目录下的build.gradle文件中添加以下代码:buildscript{​ repositories{  google()  mavenCentral()  jce......