news 2026/4/16 14:27:19

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/16 14:00:03

押注RGB和AI,彩电巨头决战2026 | CES洞察

“色彩革命”由中国家电们开始文&#xff5c;郭梦仪“物理AI的ChatGPT时刻即将到来。”英伟达创始人黄仁勋的开幕演讲&#xff0c;给今年的世界电子消费展定下了宏大的基调。这句话似乎正是今年的CES的主旋律。从这届全球消费电子产业的“技术晴雨表”&#xff0c;我们感知到&a…

作者头像 李华
网站建设 2026/4/16 12:27:34

jQuery Mobile 安装指南

jQuery Mobile 安装指南 引言 jQuery Mobile 是一个基于 jQuery 的开源移动开发框架,它可以帮助开发者轻松构建适用于各种移动设备的响应式网站。本文将详细介绍如何安装 jQuery Mobile,包括准备工作、下载和配置,以及常见问题的解决方法。 准备工作 在开始安装 jQuery …

作者头像 李华
网站建设 2026/4/16 15:27:03

解锁社媒数据价值:数据如何成为驱动企业增长的重要一环

在社交媒体渗透至商业活动每个角落的今天&#xff0c;企业面对的挑战不再是信息匮乏&#xff0c;而是信息过量。分散在抖音、小红书、微博等社交媒体平台上的用户讨论和评价&#xff0c;构成了现代商业最重要的洞察来源。但是这些数据比较碎片化&#xff0c;难以形成完整的洞察…

作者头像 李华
网站建设 2026/4/16 13:03:30

深度学习计算机毕设之人工智能基于python卷积网络对甘蔗叶子病识别

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

作者头像 李华
网站建设 2026/4/16 13:02:12

计算机深度学习毕设实战-机器学习基于cnn识别微小细胞细菌细胞器

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

作者头像 李华