最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2025年02月16日 09:10:13   作者:Dream_sky分享  
雪花算法是一種生成全局唯一ID的分布式算法,本文主要介紹了Mysql中使用sql語句生成雪花算法Id,具有一定的參考價值,感興趣的可以了解一下

一、雪花算法簡介

雪花算法(Snowflake)是一種生成全局唯一ID的分布式算法。它的主要功能是在分布式系統(tǒng)中生成一個全局唯一的ID,且ID是按照時間有序遞增的。

Snowflake算法使用一個64位的二進制數(shù)字作為ID。這64位long型ID被分割成四個部分:符號位、時間戳、工作機器ID、序列號。通過這幾部分來表示不同的信息,將數(shù)據(jù)映射到具有特定結(jié)構(gòu)的分布式系統(tǒng)中,實現(xiàn)數(shù)據(jù)的存儲和查詢。

在這里插入圖片描述

二、問題描述(項目場景)

將A表中的指定數(shù)據(jù)補償?shù)紹表中,B表id是bigint類型的雪花算法(原始數(shù)據(jù)是代碼生成的雪花算法id),我這里只做補償使用sql實現(xiàn),

這里就需要給id賦值,并且滿足之前原表的數(shù)據(jù)規(guī)則

insert into select -將一個表的數(shù)據(jù)添加到另外一個表中

-- insert into select -將一個表的數(shù)據(jù)添加到另外一個表中
insert into table_name2(id, project_code)
select 雪花算法id, project_code from table_name1 where type = 1;

三、sql生成雪花算法(已驗證)

3.1 存儲函數(shù)創(chuàng)建

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; -- 假設(shè)機器 ID 為 1
    DECLARE data_center_id BIGINT DEFAULT 0; -- 假設(shè)數(shù)據(jù)中心 ID 為 0
    DECLARE epoch BIGINT DEFAULT 1288834974657;
    -- 2010-01-01 00:00:00 UTC 的毫秒數(shù)

    -- 獲取當前時間戳(毫秒)
    SET timestamp = FLOOR(UNIX_TIMESTAMP(NOW(3)) * 1000) - epoch;

    -- 檢查當前時間戳
    IF timestamp = @last_timestamp THEN
        SET @sequence = (@sequence + 1) % 4096; -- 在同一毫秒內(nèi)遞增序列號
    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();

在這里插入圖片描述

四、實際應(yīng)用

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

成功添加

在這里插入圖片描述

到此這篇關(guān)于Mysql中使用sql語句生成雪花算法Id的文章就介紹到這了,更多相關(guān)Mysql中使用sql語句生成雪花算法Id內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

肇源县| 房山区| 腾冲县| 贵南县| 太保市| 阳高县| 乌拉特中旗| 柳河县| 油尖旺区| 伽师县| 冕宁县| 东安县| 获嘉县| 蓬安县| 曲靖市| 白城市| 施秉县| 上犹县| 门源| 丰都县| 集贤县| 剑川县| 霍邱县| 安康市| 哈尔滨市| 潼南县| 连州市| 垫江县| 文安县| 铜陵市| 武冈市| 拉萨市| 奈曼旗| 广丰县| 贡嘎县| 肃宁县| 磐石市| 海阳市| 丰顺县| 潼南县| 年辖:市辖区|