news 2026/4/18 2:00:43

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mysql中使用sql语句生成雪花算法Id

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

??更多文章请点击
[这里是图片002]

文章目录
  • 一、雪花算法简介
  • 二、问题描述(项目场景)
  • 三、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 BIGINT READS SQL DATA BEGIN DECLARE timestamp BIGINT; DECLARE machine_id BIGINT DEFAULT 1; -- 假设机器 ID 为 1 DECLARE data_center_id BIGINT DEFAULT 0; -- 假设数据中心 ID 为 0 DECLARE epoch BIGINT DEFAULT 1288834974657; -- 2010-01-01 00:00:00 UTC 的毫秒数 -- 获取当前时间戳(毫秒) SET timestamp = FLOOR(UNIX_TIMESTAMP(NOW(3)) * 1000) - epoch; -- 检查当前时间戳 IF timestamp = @last_timestamp THEN SET @sequence = (@sequence + 1) % 4096; -- 在同一毫秒内递增序列号 ELSE SET @sequence = 0; -- 不同毫秒重置序列号 END IF; SET @last_timestamp = timestamp; -- 存储当前时间戳 -- 生成雪花 ID RETURN (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;

成功添加

[这里是图片008]

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 1:58:38

HTML 语言代码:全面解析与使用指南

HTML 语言代码:全面解析与使用指南 引言 HTML,即超文本标记语言(HyperText Markup Language),是构成网页内容的基石。自从1990年由蒂姆伯纳斯-李发明以来,HTML一直是网络世界的标准语言。本文将全面解析HTML语言代码,涵盖其基本结构、常用标签、属性以及编写技巧,旨在…

作者头像 李华
网站建设 2026/3/28 4:42:43

ASP Application: 构建现代Web应用程序的关键技术

ASP Application: 构建现代Web应用程序的关键技术 引言 ASP(Active Server Pages)自1998年首次推出以来,一直是构建Web应用程序的关键技术之一。随着互联网技术的发展,ASP逐渐演变成为ASP.NET,成为了构建现代Web应用程序的重要框架。本文将详细介绍ASP技术的起源、发展、…

作者头像 李华
网站建设 2026/4/11 6:26:23

深度学习毕设项目:基于cnn识别微小细胞细菌细胞器

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/18 2:00:39

长安睿行EM60 睿行EM8 0睿行ES30 睿行M60 睿行M70 睿行M80 睿行M90 睿行S50维修手册电路图针脚定义大修正时螺丝扭力拆装步骤线路保险丝图解模块位置更新

资料来源&#xff1a;汽修帮手资料库汽修帮手资料库提供各大厂家车型维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等&#xff0c;并长期保持高频率资料更新覆盖车型&a…

作者头像 李华
网站建设 2026/4/11 2:04:31

AI 与 Maya 的深度绑定,正在改写影视特效行业规则!

影视特效行业蓬勃发展&#xff0c;AI技术迭代正改写创作逻辑。作为三维制作核心工具&#xff0c;Maya与AI的关系成行业焦点——AI对Maya并非替代&#xff0c;而是重塑&#xff0c;既注入效率动能&#xff0c;也引发创作伦理与生态的深层思考。 一、效率革命&#xff1a;AI为May…

作者头像 李华
网站建设 2026/4/16 16:52:20

Chart.js 饼图:全面解析与实例教程

Chart.js 饼图:全面解析与实例教程 引言 Chart.js 是一个基于 HTML5 Canvas 的图表库,它可以帮助开发者轻松地在网页上创建各种类型的图表。其中,饼图是图表库中最常用的图表类型之一,用于展示数据占比情况。本文将详细介绍 Chart.js 饼图的使用方法,包括基本配置、交互…

作者头像 李华