iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 雪花Id函数
  • 484
分享到

MySQL 雪花Id函数

mysql数据库性能优化安全 2023-10-11 05:10:33 484人浏览 独家记忆
摘要

环境 Mysql5.7 简介 snowflake是Twitter开源的分布式ID生成算法,结果是64bit的Long类型的ID,有着全局唯一和有序递增的特点。 最高位是符号位,因为生成的 ID

环境 Mysql5.7

简介

snowflake是Twitter开源分布式ID生成算法,结果是64bit的Long类型的ID,有着全局唯一和有序递增的特点。

show

  • 最高位是符号位,因为生成的 ID 总是正数,始终为0,不可用。
  • 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序
  • 10位的机器标识,10位的长度最多支持部署1024个节点。
  • 12位的计数序列号,序列号即一系列的自增ID,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号。
    缺点也是有的,就是强依赖机器时钟,如果机器上时钟回拨,有可能会导致主键重复的问题。

雪花Id

脚本根据 GitHub:https://github.com/yitter/IdGenerator/tree/master/sqlSQL Server 版移植而来

雪花Id脚本

CREATE FUNCTioN `SnowId`() RETURNS bigint(20)BEGINDECLARE b_current_time BIGINT;DECLARE b_time_tick BIGINT;DECLARE i_work_id INT;DECLARE i_work_id_big_length INT;DECLARE i_seq_big_length INT;DECLARE f_random FLOAT;DECLARE b_res BIGINT;SET i_work_id = 1;SET i_work_id_big_length = 4;SET i_seq_big_length = 8;SET b_current_time = (REPLACE(UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)),'.','')) + 0;SET b_time_tick = b_current_time - 1582136402000;SET f_random = RAND();SET b_res = b_time_tick * POWER(2, i_work_id_big_length + i_seq_big_length) + i_work_id * POWER(2, i_seq_big_length) + (5 + round((POWER(2, i_seq_big_length)-1) * f_random, 0));RETURN b_res;END

测试脚本

创建一个名为TestSnowId存储过程
内容:
定义了一个int变量i默认为1;
创建了一个临时表temp_numbers用于存储生成的SnowId;
循环5000次,并将SnowId添加到temp_numbers表内;
查询temp_numbers表内数据;
删除临时表;

CREATE PROCEDURE `TestSnowId` () BEGINDECLARE i INT DEFAULT 1;CREATE TEMPORARY TABLE IF NOT EXISTS temp_numbers ( number BIGINT );WHILE i <= 5000 DO    INSERT INTO temp_numbers ( number ) VALUES (SnowId ());SET i = i + 1;END WHILE;SELECT * FROM temp_numbers;DROP TEMPORARY TABLE IF EXISTS temp_numbers;END

使用

调用语句

SELECT SnowId();

getSnowId

测试是否重复

CALL TestSnowId();

test

来源地址:https://blog.csdn.net/qq_45026510/article/details/132337806

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 雪花Id函数

本文链接: https://www.lsjlt.com/news/428045.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 雪花Id函数
    环境 MySQL5.7 简介 snowflake是Twitter开源的分布式ID生成算法,结果是64bit的Long类型的ID,有着全局唯一和有序递增的特点。 最高位是符号位,因为生成的 ID...
    99+
    2023-10-11
    mysql 数据库 性能优化 安全
  • Mysql数据库自增id、uuid与雪花id详解
    目录概念介绍三种主键聚簇索引与非聚簇索引自增iduuid雪花id与应用总结概念介绍 三种主键 自增id :1 2 3 4 5…… uuid :UUID是Universally Unique I...
    99+
    2023-02-28
    mysql自增id和uuid 数据库union的用法 mysql自增主键
  • spring boot中使用雪花算法生成雪花ID
    目录 1、什么是雪花算法 2、雪花算法的优缺点 3、spring boot项目中使用雪花算法使用 1、什么是雪花算法 雪花算法(Snowflake)是一种生成全局唯一ID的算法,由Twitter公司开发。它可以在分布式系统中生成全局唯...
    99+
    2023-09-05
    spring boot java spring 算法
  • Mysql数据库自增id、uuid与雪花id实例分析
    这篇“Mysql数据库自增id、uuid与雪花id实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mysql数据库自增...
    99+
    2023-07-05
  • springboot中使用雪花算法生成雪花ID
    目录1、什么是雪花算法2、雪花算法的优缺点3、spring boot项目中使用雪花算法使用1、引入雪花算法依赖2、在配置文件中配置雪花算法参数3、注入雪花算法对象1、什么是雪花算法 ...
    99+
    2023-03-19
    springboot生成雪花ID springboot 雪花ID
  • springboot中如何使用雪花算法生成雪花ID
    这篇文章主要介绍“springboot中如何使用雪花算法生成雪花ID”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中如何使用雪花算法生成雪花ID”文章能帮助大家解决问题。1、什么...
    99+
    2023-07-05
  • MyBatis使用雪花ID的实现
    目录一、实现MyBatis ID构建接口二、雪花ID生成工具类一、实现MyBatis ID构建接口 @Slf4j @Component public class CustomIdGe...
    99+
    2024-04-02
  • MyBatis使用雪花ID怎么实现
    这篇文章主要介绍了MyBatis使用雪花ID怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis使用雪花ID怎么实现文章都会有所收获,下面我们一起来看看吧。一、实现MyBatis ID构建接口@...
    99+
    2023-06-29
  • Java使用雪花id生成算法详解
    目录什么是雪花算法位段详解优点问题实际应用具体实现什么是雪花算法 雪花算法的本质为生成一个64位长度的具有自增性的分布式全局唯一id。在64bits中,会对不同段的位进行划分。可分为...
    99+
    2022-12-20
    Java雪花id生成算法 Java雪花id
  • mybatisplus雪花算法生成Id怎么使用
    这篇文章主要讲解了“mybatisplus雪花算法生成Id怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatisplus雪花算法生成Id怎么使用”吧!雪花算法实战建表DROP&...
    99+
    2023-07-02
  • Java 基于雪花算法生成分布式id
    目录SnowFlake算法原理介绍 算法实现 SnowFlake算法原理介绍 在分布式系统中会将一个业务的系统部署到多台服务器上,用户随机访问其中一台,而之所以引入分布式系统就是为...
    99+
    2024-04-02
  • PHP利用雪花(SnowFlake)算法生成唯一ID
    目录一、雪花算法原理解析1. 分布式ID常见生成策略2. 雪花算法的结构二、PHP源码实现案例1.demo12.demo2这个算法的好处很简单可以在每秒产生约400W个不同的16位数...
    99+
    2024-04-02
  • mybatis-plus雪花算法生成Id使用详解
    目录前言一、mybatis-plus官网二、雪花算法实战三、实现分析四、为什么默认就是雪花算法五、主动设置Id生成策略总结前言 在实际开发过程中,数据库自增主键生成Id能满足大部分的...
    99+
    2024-04-02
  • PHP怎么利用雪花算法生成唯一ID
    这篇文章主要讲解了“PHP怎么利用雪花算法生成唯一ID”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP怎么利用雪花算法生成唯一ID”吧!一、雪花算法原理解析1. 分布式ID常见生成策略分...
    99+
    2023-06-30
  • mybatis-plus 如何使用雪花算法ID生成策略
    目录mybatis-plus 可以通过@TableId注解指定主键生成策略看一下源码大概找一下雪花算法的实现方式自定义ID生成器实现Mybatis-plus 中生成雪花算法id的工具...
    99+
    2024-04-02
  • mybatis-plus怎么使用雪花算法ID生成策略
    本篇内容介绍了“mybatis-plus怎么使用雪花算法ID生成策略”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mybatis-plus ...
    99+
    2023-06-21
  • Java怎么通过手写分布式雪花SnowFlake生成ID
    本文小编为大家详细介绍“Java怎么通过手写分布式雪花SnowFlake生成ID”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么通过手写分布式雪花SnowFlake生成ID”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-29
  • mysql中雪花算法是什么意思
    mysql中雪花算法是什么意思?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!一、为何要用雪花算法1、问题产生的背景现如今越...
    99+
    2024-04-02
  • Go实现分布式唯一ID的生成之雪花算法
    目录背景:特性:雪花算法:分布式唯一ID的生成 背景: 在分布式架构下,唯一序列号生成是我们在设计一个尤其是数据库使用分库分表的时候会常见的一个问题 特性: 全局唯一,这是基本要求,...
    99+
    2024-04-02
  • 基于雪花算法实现增强版ID生成器详解
    目录基于雪花算法的增强版ID生成器快速开始配置解析目前提供两个配置类详情生产推荐使用方式JMH 性能测试测试机硬件情况Sequence 配置参数JMH参数测试结果Tip基于雪花算法的...
    99+
    2022-11-13
    雪花算法实现ID生成器 雪花算法 ID生成
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作