搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
IT小白
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Kafka中的producer拦截器_kafka拦截器
2
T-SQL语言中如何在一条语句中既有升序,又有降序?_sql成绩降序同时学号升序怎么组合
3
onlyoffice5.3.4个人二次开发记录_onlyoffice 二开
4
xilinx 7系列FPGA时钟篇
5
探索开源的容器引擎--------------Docker容器操作
6
TrisaFed:异步联邦学习框架_联邦学习同步异步聚合
7
H3C交换机配置IP与MAC绑定_华三交换机如何绑定mac地址
8
鸿蒙HarmonyOS应用开发之NDK工程构建概述_openharmony ndk
9
【离线语音专题④】安信可VC离线语音开发板二次开发语音控制LED灯_vc-02 ai-thinker
10
Airtest图像识别测试工具原理解读&最佳实践 | 京东云技术团队_测试开发图像识别
当前位置:
article
> 正文
对ruoyi-vue-plus中ID生成的理解By古_柯
作者:IT小白 | 2024-04-22 20:20:18
赞
踩
ruoyi-vue-plus
对ruoyi-vue-plus中ID生成的理解
对ruoyi-vue-plus中ID生成的理解如下
ruoyi-vue-plus使用MyBatis-Plus作为ORM框架,其中主键ID生成使用的是MyBatis-Plus提供的雪花算法SnowflakeIdWorker。
SnowflakeIdWorker会在应用启动时生成一个工作器(worker),其中包括数据中心ID、机器ID和序列号。
数据中心ID采用配置中心指定,默认是0。机器ID会读取运行环境的IP后两段作为机器标识。序列号是一个自增的长整形,起始值为0。
ID生成时,会将当前毫秒时间、数据中心ID、机器ID和序列号拼接成一个64位的长整形值,作为主键ID。
其中41位是当前时间毫秒数,10位是工作器id(数据中心+机器id),12位是序列号。整体上实现了趋势递增,并且在分布式环境下可通过数据中心id和机器id来标识不同机器。
在ruoyi中,通过这种snowflake算法生成的ID可保证全局唯一性,并且对于排序、分库分表等都比较友好。
生成的ID为负值的原因可能有以下几点
ID生成算法的问题
一些ID生成算法在某些情况下会产生负值,比如经典的GUID算法中使用随机数生成时可能出现负值。
数据类型溢出
如果ID使用的是整型,而生成的正数值超过了整型能表示的正数范围,就会出现负值。
数据库主键回退
有些数据库在进行主键回收利用时,会将主键回退到一个负值然后重新进行递增分配。
时间回拨
如果ID中包含时间戳信息,并且系统时间发生了回拨,也可能会导致生成负值的ID。
代码 Bug
生成ID的代码存在问题,导致意外的负值。
用户自定义
在一些特殊业务场景下,用户可能会自定义负值ID来使用。
如果是Ruoyi中使用Snowflake算法出现负值,很大可能是时间回拨和数据类型溢出的问题。需要检查系统时间是否准确,以及数据库主键字段是否大小足够存放生成的
将字段类型从int4改为int8,对业务的影响主要有
数据迁移影响
需要进行一次全表的数据迁移,将原有int4类型的数据转换为int8,这个过程中需要评估数据量大小,转换是否会对线上业务造成影响。
占用空间变化
int8类型占用空间是int4的2倍,这会使得整个表的数据占用空间增大一倍,对数据库的压力有一定影响。
业务兼容性影响
业务中使用该字段的地方,都需要评估是否可以兼容int8,尤其是一些与数值范围相关的业务判断需要重新设计。
性能影响
由于int8占用空间变大,一些业务性能可能会有轻微影响。
存储计算影响
如果有对该字段做统计计算的业务(求和、去重等),计算结果也可能会有变化。
数据接口影响
与该字段相关的对外数据接口,接收和返回值类型需要调整为int8。
总体来说,只要评估清楚上述影响并做好迁移、测试,这种简单的类型改动对业务影响有限。主要注意兼容性和性能评估。如果评估影响在可接受范围,可以进行这次改动。
By@古柯
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/IT小白/article/detail/470342
推荐阅读
article
分布式
主键
?
雪花
算法
?
号段
模式
?一文搞懂目前主流
分布式
主键
解决方法...
分布式
主键
_
分布式
主键
分布式
主键
分布式
主键
的那些事儿 写这篇博...
赞
踩
article
Python
在
一个
列表
中
查找不在另
一个
列表
中
的
元素
...
一、问题场景:要比较两个
列表
list_A、list_B,以便创建
一个
新
列表
,新
列表
中
存储list_B
元素
没有出现在lis...
赞
踩
article
基于
cordic
算法
的小数
开
方及其
FPGA
实现
_
cordic
开
根号...
现实中很多
算法
本身就包含
开
方运算,硬件
实现
中很多时候也会涉及到
开
方运算,本次较为详细的介绍用
cordic
算法
实现
开
方运算...
赞
踩
article
2022-2024年最全
的
计算机软件
毕业设计
选
题
大全:1000个热门
选
题
推荐
✅_
毕业设计
常用
题
...
博主介绍✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华...
赞
踩
article
SQL
算术
运算符
:加法、
减法
、乘法、除法和取模
的
用法_
sql
的
减法
...
为了方便其他设备和平台
的
小伙伴观看往期文章:公众号搜索,或者扫描下方二维码,关注公众号,即可获取最新文章。看完如果觉得有...
赞
踩
article
2023
数据
频遭
泄露
!
网络安全
产业
风口要来了?_2023
年
智能制造
数据
泄露
...
数据
被视为21世纪的“钻石矿”,蕴含着巨大的动能,并且具有边际效应递增的特点,在不断的流动共享中,
数据
价值递增。
数据
显示...
赞
踩
article
2024年不可错过
的
Node
.
js
框架
大盘点:
让
你
的
后
端
开发
效率翻倍!...
在数字世界中寻找编程
的
乐趣,就像在夜空中追逐北极光,既充满挑战又
让
人心动不已。今天,
让
我们一起潜入
Node
.
js
的
璀璨世...
赞
踩
article
怎么
连接
虚拟机
中
的
MYSQL
数据库
服务器
_如何在
虚拟机
数据库
获得
服务器
...
1. 要选桥接模式, 确保
虚拟机
的
IP地址要和自己使用
的
主机IP在一个网段2. 关闭
虚拟机
的
防火墙如果前面两步不做:用...
赞
踩
article
【
Xiao
.Lei】-
GitHub
Copilot
快速入门指南_
github
copilot
教...
GitHub
Copilot
是一款革命性的工具,可以大幅提高开发效率。通过阅读本文,你已经学会了安装、配置和使用 Gi...
赞
踩
article
运行
st
able
-
diffusion
-
webui
-
directml
时报RuntimeError: T...
这个错误表明你在尝试使用Py
Torch
框架在
GPU
上运行代码,但是Py
Torch
没有检测到可用的CUDA环境,因此无法在...
赞
踩
article
安装
fastqc
_转录组启动:
Miniconda
安装|
Aspera
高速下载
测序数据|
Fastp
质控过...
安装miniconda第一步:下载 miniconda3wget https://mirrors.tuna.tsingh...
赞
踩
article
js
统一
处理
后端返回的
null
、
undefined
、空字符串_
js
date
返还
null
处理
...
统一格式化后端返回的数据该方法直接修改原数据示例// 格式化前a:{ a1:
undefined
, a2: { b1:...
赞
踩
article
华为机试真题c卷
:
螺旋
数字
矩阵
+
测试用例
执行
顺序+小区中的
小朋友
总数_某
个
产品当前迭代周期内有
n
个
特...
TM),每
个
测试用例
对应一
个
覆盖
特性
的集合,
测试用例
使用其 ID 作为下标进行标识,
测试用例
的优先级定义为其覆盖的
特性
的...
赞
踩
article
Python
第一周
学习
笔记
_
绘制
多个起点相同但大小不同
的
五角星
...
安装教程其实也不难,可以在官网上下载就好啦,但要记得配置好环境噢(建议安装
的
时候勾选Add
Python
3.x to ...
赞
踩
article
android
studio
更改代码
字体
,
Android
Studio
怎么改变代码
字体
大小?...
Android
Studio
怎么改变代码
字体
大小?以后
Android
再也不用寄人篱下了,有了自己的编程工具,可是
字体
的大...
赞
踩
article
【
三维重建
】
相机
标定
:
张正友
标定
法...
上文介绍了
相机
成像原理和各个坐标系之间的转换关系,并建立了三维到二维的理想化模型,表示出了
相机
的内、外参数矩阵。并且对于...
赞
踩
article
Nacos
开启鉴权后读取不到配置文件,
get
data
from
Nacos
error
,
data
I...
nacos开启鉴权后报错_
get
data
from nacos
error
,
data
id:
get
data
from ...
赞
踩
article
PHP
+
MySQL
的
大学
宿舍
管理系统
【附源码】_
学生
宿舍
管理系统
php
...
PHP
+
MySQL
宿舍
管理系统
,包含学生、宿管、管理员三个端_
学生
宿舍
管理系统
php
学生
宿舍
管理系统
php
...
赞
踩
article
vivado
下载失败并报 End
of
startup
status
:
LOW_
vivado
出现
end
...
检查一下你的program 管脚是否为高电平。_
vivado
出现
end
of
startup
status
:
low
vi...
赞
踩
article
Python
数据
爬
取
超详细讲解(零基础入门,
老年人
都看的懂)_
python
爬
虫
爬
取
相关
段落...
Python
数据
爬
取
超详细讲解(零基础入门,
老年人
都看的懂)_
python
爬
虫
爬
取
相关
段落
python
爬
虫
爬
取
相关
段落 ...
赞
踩
相关标签
分布式
数据库
java
java-ee
fpga开发
硬件工程
算法
课程设计
毕业设计
选题参考
计算机软件
sql
oracle
后端
软件工程
服务器
linux
web安全
安全
ddos
网络安全
node.js
copilot
github