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

Mysql中使用sql語(yǔ)句生成雪花算法Id

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

一、雪花算法簡(jiǎn)介

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

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

在這里插入圖片描述

二、問(wèn)題描述(項(xiàng)目場(chǎng)景)

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

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

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

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

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

3.1 存儲(chǔ)函數(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è)機(jī)器 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ù)

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

    -- 檢查當(dāng)前時(shí)間戳
    IF timestamp = @last_timestamp THEN
        SET @sequence = (@sequence + 1) % 4096; -- 在同一毫秒內(nèi)遞增序列號(hào)
    ELSE
        SET @sequence = 0; -- 不同毫秒重置序列號(hào)
    END IF;

    SET @last_timestamp = timestamp;
    -- 存儲(chǔ)當(dāng)前時(shí)間戳

    -- 生成雪花 ID
    RETURN (timestamp << 22) | (data_center_id << 17) | (machine_id << 12) | @sequence;
END //
DELIMITER ;

3.2 測(cè)試生成雪花id

-- 測(cè)試生成 Snowflake ID
SELECT generate_snowflake_id();

在這里插入圖片描述

四、實(shí)際應(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語(yǔ)句生成雪花算法Id的文章就介紹到這了,更多相關(guān)Mysql中使用sql語(yǔ)句生成雪花算法Id內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows 64位重裝MySQL的教程(Zip版、解壓版MySQL安裝)

    Windows 64位重裝MySQL的教程(Zip版、解壓版MySQL安裝)

    這篇文章主要介紹了Windows 64位,重裝MySQL的方法(Zip版、解壓版MySQL安裝),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值需要的朋友可以參考下
    2020-02-02
  • MYSQL聚合查詢、分組查詢、聯(lián)合查詢舉例詳解

    MYSQL聚合查詢、分組查詢、聯(lián)合查詢舉例詳解

    我們做的很多查詢都是橫向查詢,它們都是根據(jù)條件一行一行的進(jìn)行判斷,而使用聚合函數(shù)查詢是縱向查詢,它是對(duì)一列的值進(jìn)行計(jì)算,然后返回一個(gè)單一的值,這篇文章主要介紹了MYSQL聚合查詢、分組查詢、聯(lián)合查詢的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • Java的Struts框架中的主題模板和國(guó)際化設(shè)置

    Java的Struts框架中的主題模板和國(guó)際化設(shè)置

    這篇文章主要介紹了Java的Struts框架中的主題模板和國(guó)際化設(shè)置,Struts是Java的SSH三大web開(kāi)放框架之一,需要的朋友可以參考下
    2015-12-12
  • mysql排查鎖等待的解決方法

    mysql排查鎖等待的解決方法

    最近線上碰到了幾次mysql鎖等待的問(wèn)題,本文主要介紹了mysql排查鎖等待的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Mysql5.7.18的安裝與主從復(fù)制圖文詳解

    Mysql5.7.18的安裝與主從復(fù)制圖文詳解

    這篇文章主要介紹了Mysql5.7.18的安裝與主從復(fù)制圖文詳解,需要的朋友可以參考下
    2017-08-08
  • MySQL的數(shù)據(jù)類型和建庫(kù)策略分析詳解

    MySQL的數(shù)據(jù)類型和建庫(kù)策略分析詳解

    無(wú)論是在小得可憐的免費(fèi)數(shù)據(jù)庫(kù)空間或是大型電子商務(wù)網(wǎng)站,合理的設(shè)計(jì)表結(jié)構(gòu)、充分利用空間是十分必要的。這就要求我們對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的常用數(shù)據(jù)類型有充分的認(rèn)識(shí)。下面我就將我的一點(diǎn)心得寫(xiě)出來(lái)跟大家分享。
    2008-04-04
  • MySql安裝與卸載的詳細(xì)教程

    MySql安裝與卸載的詳細(xì)教程

    這篇文章主要為大家介紹了MySql安裝與卸載的詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • MySQL OOM(內(nèi)存溢出)的解決思路

    MySQL OOM(內(nèi)存溢出)的解決思路

    這篇文章主要介紹了MySQL OOM(內(nèi)存溢出)的解決思路,文中講解非常細(xì)致,幫助大家在學(xué)習(xí)工作中解決內(nèi)存溢出的問(wèn)題,感興趣的朋友可以了解下
    2020-08-08
  • MySQL?8.0.29?解壓版安裝配置方法圖文教程

    MySQL?8.0.29?解壓版安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了MySQL?8.0.29?解壓版安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)表的方法

    mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)表的方法

    這篇文章主要介紹了mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)、數(shù)據(jù)表的方法,有需要的朋友可以參考一下
    2013-11-11

最新評(píng)論

庄浪县| 方山县| 浪卡子县| 定结县| 县级市| 三门峡市| 柳州市| 浦城县| 邛崃市| 莱西市| 平遥县| 邻水| 宁德市| 美姑县| 胶州市| 崇信县| 台州市| 泸定县| 毕节市| 保山市| 潞城市| 牡丹江市| 阳春市| 衡山县| 冷水江市| 金川县| 广宁县| 岳阳县| 新郑市| 通许县| 固阳县| 金沙县| 灌云县| 齐齐哈尔市| 呼图壁县| 平山县| 孙吴县| 昔阳县| 玉门市| 清丰县| 临漳县|