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

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

 更新時間:2026年05月25日 14:23:02   作者:Hure INGI  
雪花算法在分布式系統(tǒng)中生成全局唯一ID,本文詳細(xì)介紹了其工作機(jī)制,并在SQL中應(yīng)用生成雪花ID的方法,以實現(xiàn)數(shù)據(jù)表之間的遷移和補充,確保ID的唯一性和有序性

一、雪花算法簡介

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

Snowflake算法使用一個64位的二進(jìn)制數(shù)字作為ID。

這64位long型ID被分割成四個部分:符號位、時間戳、工作機(jī)器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è)機(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)前時間戳(毫秒)
    SET timestamp = FLOOR(UNIX_TIMESTAMP(NOW(3)) * 1000) - epoch;

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

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

    -- 生成雪花 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;

成功添加~

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL日志文件詳解

    MySQL日志文件詳解

    這篇文章主要介紹了MySQL日志文件詳解,本文分別講解了錯誤日志、二進(jìn)制日志、通用查詢?nèi)罩尽⒙樵內(nèi)罩?、Innodb的在線redo日志、更新日志等日志類型和作用介紹,需要的朋友可以參考下
    2015-07-07
  • 系統(tǒng)高吞吐量下的數(shù)據(jù)庫重復(fù)寫入問題分析解決

    系統(tǒng)高吞吐量下的數(shù)據(jù)庫重復(fù)寫入問題分析解決

    這篇文章主要介紹了系統(tǒng)高吞吐量下的數(shù)據(jù)庫重復(fù)寫入問題分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 一文帶你了解MySQL的左連接與右連接

    一文帶你了解MySQL的左連接與右連接

    在MySQL中,左查詢和右查詢是通過使用LEFT?JOIN和RIGHT?JOIN關(guān)鍵字來執(zhí)行的,本文通過詳細(xì)的代碼示例簡單介紹這兩種查詢方法的語法,需要的朋友可以參考下
    2023-07-07
  • Mysql系統(tǒng)變量與狀態(tài)變量詳細(xì)介紹

    Mysql系統(tǒng)變量與狀態(tài)變量詳細(xì)介紹

    這篇文章主要介紹了Mysql系統(tǒng)變量與狀態(tài)變量詳細(xì)介紹,能夠在程序運行過程中影響Mysql程序行為的變量稱之為系統(tǒng)變量,想了解更多相關(guān)內(nèi)容的小伙伴可以參考下面文章內(nèi)容
    2022-09-09
  • mysql數(shù)據(jù)庫重命名語句分享

    mysql數(shù)據(jù)庫重命名語句分享

    這篇文章主要介紹了mysql數(shù)據(jù)庫重命名語句救命示例,語句中的數(shù)據(jù)庫表前綴換成自己的就可以了,大家參考使用吧
    2014-01-01
  • MySQL分割字符串一行轉(zhuǎn)多行的實現(xiàn)方法

    MySQL分割字符串一行轉(zhuǎn)多行的實現(xiàn)方法

    這篇文章主要介紹了MySQL分割字符串一行轉(zhuǎn)多行,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • mysql類似oracle rownum寫法實例詳解

    mysql類似oracle rownum寫法實例詳解

    在本篇文章里小編給大家分享的是關(guān)于mysql類似oracle rownum寫法以及相關(guān)實例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • MySQL兩個表的親密接觸-連接查詢的原理分析

    MySQL兩個表的親密接觸-連接查詢的原理分析

    這篇文章主要介紹了MySQL兩個表的親密接觸-連接查詢的原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 如何解決MySQL?this?is?incompatible?with?sql_mode=only_full_group_by問題

    如何解決MySQL?this?is?incompatible?with?sql_mode=only_full_

    MySQL的ONLY_FULL_GROUP_BY模式要求在使用GROUP?BY時,SELECT語句中引用的所有列必須在GROUP?BY子句中明確指定,或者是聚合函數(shù)的一部分,本文提供了修改SQL語句、使用聚合函數(shù)、禁用ONLY_FULL_GROUP_BY等解決方法,并強(qiáng)調(diào)了在禁用該模式時應(yīng)評估其影響
    2024-11-11
  • mysql-5.5.28源碼安裝過程中錯誤總結(jié)

    mysql-5.5.28源碼安裝過程中錯誤總結(jié)

    介紹一下關(guān)于mysql-5.5.28源碼安裝過程中幾大錯誤總結(jié),希望此文章對各位同學(xué)有所幫助。
    2013-10-10

最新評論

宣化县| 安阳县| 玉田县| 武义县| 海兴县| 通山县| 邵阳市| 兴宁市| 陵水| 丹凤县| 潞城市| 墨玉县| 安新县| 亚东县| 南澳县| 石首市| 林口县| 卢龙县| 涪陵区| 宜章县| 慈溪市| 宁城县| 瑞丽市| 慈利县| 囊谦县| 重庆市| 和顺县| 蓬溪县| 陈巴尔虎旗| 石嘴山市| 凤台县| 洱源县| 松江区| 深水埗区| 武宁县| 门头沟区| 鄱阳县| 韶关市| 三台县| 来宾市| 水城县|