【MYSQL分布式环境问题】为什么不能使用自增ID或UUID做主键?

模拟退火算法详细讲解(含实例python代码) 模拟退火算法详细讲解(含实例python代码)(一)模拟退火算法简介三级目录(二)模拟退火算法原理(1)基本思想(2)算法步骤(3)参数控制(三)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之后感觉还是不太清楚,最后问了老师之后才搞明白。想把自己的理解写下来,帮助大家更好的理解。本篇文章是在另一篇博客的基础上加了一下自己的理解,然后又把我们在实验中的实例写下来,还有参考代码。希望大家看了之后能够加深对模拟退火算法的理解。 另一篇博客链接: 深度学习 — 模拟退火算法详解. (一)模拟退火算法简介 阅读详情

为什么不能使用自增ID或UUID做主键?

在Mysql的分布式环境中,为什么不推荐使用自增主键?

'id' INT(10) NOT NULL AUTO_INCREMENT

单库情况下做主键是没有问题的,但分布式情况下就会存在问题。

负载均衡问题:

在这里插入图片描述

其中A库中的id用完之后才会使用B库,此时C库是闲置的,造成资源空置问题。

性能损耗问题:

在这里插入图片描述

资源同步过程中需要加锁进行处理,自带id会损耗性能。

id冲突:

在这里插入图片描述

每个数据库都维护自己的id,例如:当三个库都从1,2,3…开始,就会出现数据冲突的问题(都出现id=1的情况)。

UUID可以用来做主键吗?会存在什么问题?

因为数据库底层是B+树结构:
在这里插入图片描述

底层通过页为大小进行存储数据的,并且B+树是排好序的,而对于uuid的生成并不是有序的,这样在插入数据时就可能会造成频繁的数据移动问题,从而严重影响性能。

但在Mysql8.0版本推出一个(bin to UUID)函数,这个可以实现UUID有序。

雪花算法可以用做主键吗?原理是怎样的?有什么优缺点?如何解决这些缺点?

雪花算法的特点和定义:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时钟回拨

可能会存在时钟回拨问题:
在这里插入图片描述

解决方案:
在这里插入图片描述

推荐第三种方案,对雪花算法进行改造:
在这里插入图片描述

在这里插入图片描述

当发现始终回拨问题后就可以递增始终序列。如果三位不满足需求可以从序列号或机器码再借几位分配给时钟序列。

RK3588 Weston 下面是使用 weston -B=vnc-backend.so --width=1280 --height=720 ,使用vnc的客户端来远程访问weston桌面。Wayland是一套display server(Wayland compositor)与client间的。,而Weston是Wayland compositor的参考实现。7:在基于wayland 运行Qt 程序。根据不同版本,支持的后端也不相同。2:当前weston支持的后端。4:weston的配置文件。3:weston中的录屏。 阅读详情

相关推荐

【智驾与大模型】端到端与多模态大模型的精彩之旅

智驾和大模型的回顾与展望。开头的笔者自述也说了些心窝子话,边缘计算的监管刻不容缓!

仿生实验室:从0到1,制作人脸表情交互机器人,记录过程,软硬件全部开源,与君共襄盛举! 1318

大厂为什么要禁止使用数据库自增主键

何为尾部热点,在使用范围分片的情况下,测试程序的生成主键是单调递增的,所以新写入的数据往往集中在一个 范围范围内,而范围又是数据调度的最小单位,只能存在于单节点,那么这时集群就退化成单机的写入性能,不能充分利用分布式读写的扩展优势了。如果单条数据量比较小,在分片1中实际可以容纳1.5亿数据,就无法再进行数据扩展了,因为数据是按照ID范围进行分片的,ID是固定死的,无法在运行期间,进行动态扩展。以时间为依据,结合机器ID及序列,生成的一个定长的数字,这个数字就可以作为主键。当数据量大时,代价是很大的。

每天学习一点点 1769

mysql一主键uuid和自增的选择

MySQL主键

weixin_70280523的博客 4608

银河麒麟V10 SP3系统下如何安全安装gcc-toolset-10(附yum仓库避坑指南)

本文详细介绍了在银河麒麟V10 SP3系统中安全部署gcc-toolset-10的完整方案。核心在于通过配置默认禁用的yum仓库(如EPKL仓库)并配合--enablerepo参数进行精准安装,有效规避依赖冲突风险,实现与系统默认GCC 7.3的稳定共存。文章还提供了多版本环境切换、系统维护及故障排查的实用指南,确保操作的可控与可逆。

h0i1j2k3l的博客 587

卡尔曼滤波算法-Kalman Filter Algorithm

Kalman滤波是一种递归过程,主要有两个更新过程:时间更新和观测更新,其中时间更新主要包括状态预测和协方差预测,主要是对系统的预测,而观测更新主要包括计算卡尔曼增益、状态更新和协方差更新,因此整个递归过程主要包括五个方面的计算:1)状态预测;2)协方差预测;3)卡尔曼增益;4)状态更新;5)协方差更新; 用数学公式表示,如下: 状态预测:(1) 其中,X(k|k)是k时...

sunlin972913894的博客 2万+

mysql不使用自增_自增ID有什么坏处?什么样的场景下不使用自增ID?

大家好,我是IT修真院上海分院第3期学员,一枚正直善良的java程序员,今天给大家分享一下,修真院java任务中的一个知识点:自增ID有什么坏处?什么样的场景下不使用自增ID?1.背景对于MySQL中表的主键一般采用id字段自增的形式,不过自增id存在一些问题,在一些场景下是不推荐使用自增ID的。2.什么是自增ID自增ID是在设计表时将id字段的值设置为自增的形式,这样当插入一行数据时无需指定id...

weixin_29660659的博客 4357

LabVIew串口收发的一些问题

LabView串口收发实验总结

weixin_45508826的博客 2065

mysql何时选择自增id?何时不选?

mysql何时选择主键,何时不选择主键

Jeff__Chou的博客 3129

ROS2实战:从零部署Cartographer激光SLAM系统

本文详细介绍了在ROS2 Humble环境下,从零开始部署Cartographer激光SLAM系统的完整实战流程。内容涵盖环境准备、Cartographer安装(APT与源码编译两种方式对比)、工作空间与功能包创建、核心启动文件与Lua配置文件编写、系统构建与可视化启动,以及地图保存与实战调参技巧,帮助开发者快速构建稳定可靠的机器人SLAM应用。

weixin_29213655的博客 248

【手把手教学】YOLOv13的Dilated Reparam Block (DRB) 实现细节与优化技巧

DRB(Dilated Reparam Block)是一种创新的卷积神经网络模块,通过多分支膨胀卷积和结构重参数化技术显著提升模型性能。训练阶段使用不同膨胀率和卷积核大小的并行分支增强特征提取能力,推理阶段则将这些分支融合为单一高效的大核卷积。该方法成功解决了大核卷积的计算复杂度和训练困难等问题,在保持推理效率的同时,使模型准确率提升8.56%,mAP暴涨12.33%。DRB的核心在于训练时复杂、推理时简单的设计哲学,以及膨胀卷积的多尺度特征提取能力,为CNN性能优化提供了新的思路。

FJN110的博客 554

为什么不推荐使用自增ID?

在MySQL数据库的开发与管理中,自增ID(AUTO_INCREMENT)常常被开发者当作主键生成的默认方案。它的使用简单便捷,只需在创建表时指定字段为自增,数据库便会自动为新插入的记录分配一个唯一且递增的ID。然而,在实际的生产环境,尤其是面对高并发、分布式系统和复杂业务需求时,自增ID却暴露出了诸多弊端。MySQL自增ID虽然在简单场景下具有一定优势,但在高并发、分布式和复杂业务需求的场景中,其局限性日益明显。

小李同学的博客 1856

13、控制依赖与切片的新基础及递归While程序的摘要

本文探讨了控制依赖和程序切片的新研究进展,并提出了一种用于递归While程序的广义过程摘要概念和验证框架。文章介绍了控制依赖的新定义及其优势,程序切片的相关工作,以及递归While程序的过程摘要在完全正确性和终止性证明中的应用。通过阶乘和插入排序程序的示例分析,展示了过程摘要的有效性。未来的研究将聚焦于并发程序的依赖计算、依赖关系的语义连接以及时间属性的保留。

kotlin6android的博客 85

【MySQL】mysql中不推荐使用uuid或者雪花id作为主键的原因以及差异化对比

在数据库设计中,选择适当的主键类型对于数据的存储和查询效率至关重要。在MySQL中,有些开发者倾向于使用UUID(Universally Unique Identifier)或者雪花ID作为主键,以确保数据的唯一性。然而,这种做法并不总是推荐的,因为它们在性能、存储空间和索引效率等方面存在一些问题。本文将探讨在MySQL中不推荐使用UUID或者雪花ID作为主键的原因,并与其他主键类型进行差异化对比。

Venus's Blog 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

uuid与自增id的区别与使用

最近在使用数据库要建表选择主键的时候,突然想到经常使用的两类主键id——自增id和UUID有什么区别,用那种更好?之前使用MySql的时候通常直接就选择了自增id了,工作的时候也看到有些项目使用UUID做主键,但是都没怎么考虑两者的区别,优缺点之类的。现在要键新表选择主键的时候,就需要考虑选择哪种做主键了,因此就有了这篇文章 本文首先分别简单为什么数据库需要主键,然后介绍自增id和UUID,接着比较两者的区别,最后给出何时使用哪种类型做主键更好。 关系型数据库中的主键 在关系型数据库模型中,关系型数据库是一

8805

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何设置MySQL分布式架构主键ID,为什么不能使用自增ID或者UUID做主键?

MySQL分布式架构主键ID的设置方法 基于数据库的全局唯一ID生成器 原理:利用数据库的特性来生成唯一ID。例如,在MySQL中可以创建一个专门用于生成ID的表,表中只有一个字段(如id字段),每次需要生成ID时,通过对这个表进行插入操作(插入一条空记录),然后获取这个新插入记录的自增ID值,再将这个记录删除。这样就可以得到一个全局唯一的ID。 优点:简单直接,能保证唯一性。 缺点:性能较差,因为涉及到数据库的插入和删除操作,并且需要频繁访问数据库,不适合高并发场景。 不能使用自增ID的

weixin_50153914的博客 1575

使用自增ID主键和UUID作为主键的优劣比较

mysql不要用uuid用自增主键,自增主键效率高innodb的索引特性导致了自增id做主键是效率最好的 测试: 1、准备表以及数据 UC_USER,自增ID为主键,表结构类似如下: CREATE TABLE `UC_USER` (  `ID` bigint(20) NOT NULL AUTO_INCREMEN...

Buns.的博客 7627

MySQL 数据表主键设计,选择自增 id 还是 UUID 还是雪花 id?

前言 在 MySQL 数据表的设计中,官方推荐我们不要使用 UUID 或者其他不连续不重复的 id,而是推荐使用连续自增的主键 id(auto_increment),那么为什么会这样建议呢,我们来简单地分析一下。 背景 随着现在许多项目都涉及到了分布式或者微服务,后续或多或少都会针对具体的服务需求对数据库进行拆分(分库分表),这里就会产生一个问题,拆分后的 id 该如何妥善处理? 例如,在之前的业务中,所有的数据内容都是存放在同一张数据表中的,主键 id 都是自增的,这当然没有任何问题。但是当单表的数据量上

小楠的博客 9533

分布式id的选择问题

简单说就是时间被调整回到了之前的时间,由于雪花算法重度依赖机器的当前时间,所以一旦发生时间回拨,将有可能导致生成的 ID 可能与此前已经生成的某个 ID 重复(前提是刚好在同一毫秒生成 ID 时序列号也刚好一致),这就是雪花算法最经常讨论的问题——时间回拨解决方案:直接抛出异常 / 延迟等待第三种解决方案。

qq_52035797的博客 1705

如何设置MySQL 分布式架构主键ID,为什么不能使用自增ID和UUID做主键,使用雪花算法有什么优缺点?

如何设置MySQL 分布式架构主键ID,为什么不能使用自增ID和UUID做主键,使用雪花算法有什么优缺点?

weixin_42501031的博客 588

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

UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息。如此一来,每个人都可以创建不与其他人冲突的 UUID,就不需考虑数据库创建时的名称重复问题。UUID 是由一组32位数的16进制数字所构成,是故 UUID 理论上的总数为1632=2128,约等于3.4 x 10123。也就是说若每纳秒产生1百万个 UUID,要花100亿年才会将所有 UUID 用完。

Z99263的博客 1640

分布式ID生成方案--雪花算法和UUID对比

分布式ID的业务需求 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。 比如美团外卖:由于系统中数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据,如订单、骑手、优惠券也都需要有唯一ID做标识。因此一个能够生成全局唯一ID的系统是非常必要的。 生成ID的硬性要求 全局唯一 不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 趋势递增 在MySQL的InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用BTree的数据结构来存储索引数据。因此在主键的选择上我们应该尽量使用有

qq_40950903的博客 2万+

mysql使用自增id、uuid、雪花算法的优缺点,以及场景

综上所述,选择适当的主键类型对于数据库的性能和可扩展性至关重要。在MySQL中,使用自增整数作为主键是一种常见的做法,因为它具有较小的存储空间、高效的索引和自动增长的特性。相比之下,使用UUID或者雪花ID作为主键可能会导致性能下降、存储空间浪费和索引效率降低等问题。然而,具体选择何种主键类型还是要根据具体的业务需求和数据特点来决定。

sunsiny 1930

Mysql 自增id、uuid与雪花id

自增id :1 2 3 4 5……uuid :UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。通用唯一标识符的意思,可以以业务实际user id为主键 比如QQ号 手机号等雪花id :相比UUID无序生成的id而言,雪花算法是有序的(有时间参数),而且都是由数字组成。雪花id最大为64位,符合java中long的长度64位。适用于大规模分布式1、旧系统或者单部署系统,一般都采用自增主键,主要是便捷性考虑。

一直在水些技术小文 2666

自增id,UUID,雪花id

UUID1.优点2. 缺点雪花id1.优点2.缺点自增id1.优点2.缺点使用 UUID 替代雪花 ID 行不行?

qq_53207874的博客 1762

MySQL主键:自增id、UUID、雪花算法

视频可看: 动画讲解:为什么不能使用自增ID或者UUID做MySQL的主键,雪花算法生成的主键存在哪些问题_哔哩哔哩_bilibili自增主键的好处:写入效率高弊端:变通方式:不使用自增主键做数据分片,而使用业务数据的用户ID做数据分片,每个用户的数据都集中在一个库,可以做到更加的内聚。 UUID随机、无序,具有非常好的全局唯一性,但不推荐做MySQL主键。从MySQL的B+树原理看,一个page写满向下一个page写,要求下一个page的数据要大于上一个page的数据,现插入一个新数据,但U

weixin_46356448的博客 2093

深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。 一:mysql和程序实例 1.1:准备数据 要说明这个问题,我们首先来建立三张表,分别是 user_auto_key ,user_uuid,user_random_key,分别表示自动增长的主键, uuid作为主键,.

LoveSummer 3981
上一篇: C++基础和核心编程知识整理
下一篇: Volatile和synchronized的原理和异同
ICE·BING
博客等级 码龄7年 148粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值