当前位置: 首页 > news >正文

Mysql中使用sql语句生成雪花算法Id

🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝

🍓 更多文章请点击
在这里插入图片描述在这里插入图片描述

文章目录

  • 一、雪花算法简介
  • 二、问题描述(项目场景)
  • 三、sql生成雪花算法(已验证)
    • 3.1 存储函数创建
    • 3.2 测试生成雪花id
  • 四、实际应用

一、雪花算法简介

雪花算法(Snowflake)是一种生成全局唯一ID的分布式算法。它的主要功能是在分布式系统中生成一个全局唯一的ID,且ID是按照时间有序递增的。

Snowflake算法使用一个64位的二进制数字作为ID。这64位long型ID被分割成四个部分:符号位、时间戳、工作机器ID、序列号。通过这几部分来表示不同的信息,将数据映射到具有特定结构的分布式系统中,实现数据的存储和查询。

在这里插入图片描述

二、问题描述(项目场景)

将A表中的指定数据补偿到B表中,B表id是bigint类型的雪花算法(原始数据是代码生成的雪花算法id),我这里只做补偿使用sql实现,

这里就需要给id赋值,并且满足之前原表的数据规则

insert into select -将一个表的数据添加到另外一个表中

-- insert into select -将一个表的数据添加到另外一个表中
insert into table_name2(id, project_code)
select 雪花算法id, project_code from table_name1 where type = 1;

三、sql生成雪花算法(已验证)

3.1 存储函数创建

SET @last_timestamp = -1; -- 初始化全局变量
SET @sequence = 0; -- 初始化全局变量DROP FUNCTION IF EXISTS generate_snowflake_id;
DELIMITER //
CREATE FUNCTION generate_snowflake_id() RETURNS BIGINTREADS SQL DATA
BEGINDECLARE timestamp BIGINT;DECLARE machine_id BIGINT DEFAULT 1; -- 假设机器 ID 为 1DECLARE data_center_id BIGINT DEFAULT 0; -- 假设数据中心 ID 为 0DECLARE epoch BIGINT DEFAULT 1288834974657;-- 2010-01-01 00:00:00 UTC 的毫秒数-- 获取当前时间戳(毫秒)SET timestamp = FLOOR(UNIX_TIMESTAMP(NOW(3)) * 1000) - epoch;-- 检查当前时间戳IF timestamp = @last_timestamp THENSET @sequence = (@sequence + 1) % 4096; -- 在同一毫秒内递增序列号ELSESET @sequence = 0; -- 不同毫秒重置序列号END IF;SET @last_timestamp = timestamp;-- 存储当前时间戳-- 生成雪花 IDRETURN (timestamp << 22) | (data_center_id << 17) | (machine_id << 12) | @sequence;
END //
DELIMITER ;

3.2 测试生成雪花id

-- 测试生成 Snowflake ID
SELECT generate_snowflake_id();

在这里插入图片描述

四、实际应用

insert into table_name2(id, project_code)
select generate_snowflake_id(), project_code from table_name1 where type = 1;

成功添加
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

相关文章:

Mysql中使用sql语句生成雪花算法Id

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

/etc/profile vs ~/.bashrc:如何正确使用?

在 Linux 或 WSL 环境中&#xff0c;我们经常需要配置环境变量、命令别名、路径等信息。然而&#xff0c;许多人在配置时会纠结&#xff1a;到底应该放在 /etc/profile 还是 ~/.bashrc&#xff1f;本文将全面解析它们的区别&#xff0c;并帮助你做出正确的选择。 1. 什么是 /et…...

SpringBoot实战:高效获取视频资源

文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下&#xff0c;海量内容数据日益增长&#xff0c;每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据&#xff0c;已成为各大平…...

Flutter_学习记录_数据更新的学习

Flutter 如果界面上有数据更新时&#xff0c;目前学习到的有3种&#xff1a; 第一种&#xff1a; 直接用 StatefulWidget组件&#xff0c;然后当数据更新时&#xff0c;调用setState的方法更新数据&#xff0c;页面上的数据会直接更新&#xff1b;第二种&#xff1a; 用 State…...

c++ 多线程知识汇总

一、std::thread std::thread 是 C11 引入的标准库中的线程类&#xff0c;用于创建和管理线程 1. 带参数的构造函数 template <class F, class... Args> std::thread::thread(F&& f, Args&&... args);F&& f&#xff1a;线程要执行的函数&…...

day09_实时类标签/指标

文章目录 day09_实时类标签/指标一、日志数据实时采集2、Flume简介2.3 项目日志数据采集Flume配置2.3.1 涉及的Flume组件和参数2.3.2 Nginx日志采集2.3.3 用户行为日志采集 二、Nginx日志数据统计1、日志格式说明2、数据ETL2.1 日志抽取2.1.1 正则表达式2.1.2 基于Spark实现Ngi…...

【前端开发学习笔记16】Vue_9

文章分类架子 多个页面复用&#xff0c;封装成组件&#xff1a; props 定制标题默认插槽 default 定制内容主体具名插槽 extra 定制按钮 <template><el-card class"page-container"><template #header><div class"header"><s…...

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…...

2025年3月营销灵感日历

2025年的第一场营销大战已经拉开帷幕了&#xff01; 三月可是全年最值钱的营销黄金月——妇女节、植树节、315消费者日三大爆点连击&#xff0c;还有春分、睡眠日、世界诗歌日等20隐藏流量密码。 道叔连夜扒了18个行业数据&#xff0c;整理了这份《2025年3月营销灵感日历》&a…...

MySQL的innoDB引擎

一、逻辑存储结构 表空间:ibd文件,一个MySQL实例可以对应多个表空间,用于存储记录,索引等数据; 段:分为数据段(leaf node segment)、索引段(non-leaf node segment)、回滚段(rollback segment),innodb是索引组织表,数据段就是B+树的非叶子节点。段用来管理多个e…...

HCIA项目实践---OSPF的知识和原理总结

9.5 OSPF 9.5.1 从哪些角度评判一个动态路由协议的好坏&#xff1f; &#xff08;1&#xff09;选路佳&#xff08;是否会出环&#xff09; OSPF 协议采用链路状态算法&#xff0c;通过收集网络拓扑信息来计算最短路径&#xff0c;从根本上避免了路由环路的产生。 &#xff08…...

hexo 魔改 | 修改卡片透明度

hexo 魔改 | 修改卡片透明度 ** 博客食物用更佳 博客地址 ** 这是笔者自己瞎倒腾的。作为前端菜鸡一枚&#xff0c;大佬们随便看看就好~ 我用的主题是 butterfly 4.12.0 分析 通过开发者工具可以看出来卡片的背景和 --card-bg 变量有关 再在 sources 下的 css 文件夹下的…...

今日AI和商界事件(2025-02-13)

今日AI领域的主要事件包括&#xff1a; 一、OpenAI相关动态 取消独立发布o3模型计划&#xff1a; OpenAI首席执行官奥尔特曼宣布&#xff0c;公司取消独立发布o3模型的计划。未来几个月内&#xff0c;OpenAI将推出GPT-5&#xff0c;该模型将整合多项技术&#xff0c;并应用于C…...

38.日常算法

1.最短无序连续子数组 题目来源 给你一个整数数组 nums &#xff0c;你需要找出一个 连续子数组 &#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组&#xff0c;并输出它的长度。 示例 1&#xff1a; 输入…...

如何构建有效的人工智能代理

目录 什么是 AI 代理? 何时应使用 AI 代理? 人工智能代理的构建模块 构建 AI 代理的常用方法 1. 提示链接(分步说明) 2.路由(将任务发送到正确的地方) 3.并行处理(同时做多件事) 4. 协调者和工作者 AI(团队合作) 5. 评估器和优化器(修复错误) 如何让人工…...

qt 事件的传递顺序

在 Qt 中&#xff0c;事件的传递顺序遵循以下基本规则&#xff1a; 事件的产生&#xff1a;当用户与界面交互时&#xff0c;操作&#xff08;如鼠标点击、键盘输入等&#xff09;会生成相应的事件&#xff08;如 QMouseEvent、QKeyEvent 等&#xff09;。 事件的传递顺序&…...

全面掌握Flutter开发:从核心原理到跨平台实战,构建高效应用

文章目录 引言 一、Flutter框架概述二、Flutter开发环境搭建三、Flutter核心技术解析1. **Widget树与状态管理**2. **路由与导航**3. **网络请求与数据解析**4. **本地存储与数据库**5. **包管理与依赖** 四、实战案例&#xff1a;开发跨平台新闻客户端五、Flutter开发工具与调…...

Flutter 添加 iOS widget 小组件

环境 macOS 15.1 Xcode16.1 Flutter 3.27.4 前言 本篇文章主要记录&#xff0c;在Flutter 项目中如何正确地添加iOS 小组件&#xff0c;iOS 小组件 相关的知识在另一篇文章有记录。 iOS 14 widget 添加小组件 WidgetExtension 打开Xcode New -> Target 选择 iOS -> 搜…...

2025年金三银四经典自动化测试面试题

概述 觉得自动化测试很难&#xff1f; 是的&#xff0c;它确实不简单。但是学会它&#xff0c;工资高啊&#xff01; 担心面试的时候被问到自动化测试&#xff1f; 嗯&#xff0c;你担心的没错&#xff01;确实会被经常问到&#xff01; 现在应聘软件测试工程师的岗位&…...

C++17 中 std::lcm:从入门到精通

文章目录 一、引言二、std::lcm 的基本概念三、入门示例四、计算多个整数的最小公倍数五、std::lcm 的实现原理六、在实际项目中的应用七、注意事项八、总结 一、引言 在 C 编程中&#xff0c;处理数学运算时&#xff0c;计算最小公倍数&#xff08;Least Common Multiple&…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...