国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL 雪花Id函數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了MySQL 雪花Id函數(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

環(huán)境 MySQL5.7

簡(jiǎn)介

snowflake是Twitter開(kāi)源的分布式ID生成算法,結(jié)果是64bit的Long類(lèi)型的ID,有著全局唯一和有序遞增的特點(diǎn)。

mysql雪花算法id,mysql,數(shù)據(jù)庫(kù),性能優(yōu)化,安全

  • 最高位是符號(hào)位,因?yàn)樯傻?ID 總是正數(shù),始終為0,不可用。
  • 41位的時(shí)間序列,精確到毫秒級(jí),41位的長(zhǎng)度可以使用69年。時(shí)間位還有一個(gè)很重要的作用是可以根據(jù)時(shí)間進(jìn)行排序。
  • 10位的機(jī)器標(biāo)識(shí),10位的長(zhǎng)度最多支持部署1024個(gè)節(jié)點(diǎn)。
  • 12位的計(jì)數(shù)序列號(hào),序列號(hào)即一系列的自增ID,可以支持同一節(jié)點(diǎn)同一毫秒生成多個(gè)ID序號(hào),12位的計(jì)數(shù)序列號(hào)支持每個(gè)節(jié)點(diǎn)每毫秒產(chǎn)生4096個(gè)ID序號(hào)。
    缺點(diǎn)也是有的,就是強(qiáng)依賴機(jī)器時(shí)鐘,如果機(jī)器上時(shí)鐘回?fù)?,有可能?huì)導(dǎo)致主鍵重復(fù)的問(wèn)題。

雪花Id

腳本根據(jù) github:https://github.com/yitter/IdGenerator/tree/master/SQL 的SQL Server 版移植而來(lái)

雪花Id腳本

CREATE FUNCTION `SnowId`() RETURNS bigint(20)
BEGIN
	
	DECLARE 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

測(cè)試腳本

創(chuàng)建一個(gè)名為T(mén)estSnowId存儲(chǔ)過(guò)程
內(nèi)容:
定義了一個(gè)int變量i默認(rèn)為1;
創(chuàng)建了一個(gè)臨時(shí)表temp_numbers用于存儲(chǔ)生成的SnowId;
循環(huán)5000次,并將SnowId添加到temp_numbers表內(nèi);
查詢temp_numbers表內(nèi)數(shù)據(jù);
刪除臨時(shí)表;

CREATE PROCEDURE `TestSnowId` () 
BEGIN
	DECLARE 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

使用

調(diào)用語(yǔ)句

SELECT SnowId();

mysql雪花算法id,mysql,數(shù)據(jù)庫(kù),性能優(yōu)化,安全

測(cè)試是否重復(fù)

CALL TestSnowId();

mysql雪花算法id,mysql,數(shù)據(jù)庫(kù),性能優(yōu)化,安全文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745333.html

到了這里,關(guān)于MySQL 雪花Id函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 雪花算法生成唯一數(shù)字id

    2024年02月02日
    瀏覽(87)
  • 分布式ID生成算法——雪花算法

    分布式ID生成算法——雪花算法

    一、分布式ID ID可以唯一標(biāo)識(shí)一條記錄。 對(duì)于單體架構(gòu),我們可以使用自增ID來(lái)保證ID的唯一性。但是,在分布式系統(tǒng)中,簡(jiǎn)單的使用自增ID就會(huì)導(dǎo)致ID沖突。這也就引出了 分布式ID 問(wèn)題。分布式ID也要求滿足分布式系統(tǒng)的 高性能、高可用、高并發(fā) 的特點(diǎn)。 二、雪花算法 世界

    2024年02月06日
    瀏覽(26)
  • 分布式ID生成算法:雪花算法

    雪花算法(Snowflake)是一種分布式ID生成算法,可以生成唯一的、有序的、不重復(fù)的ID號(hào),廣泛應(yīng)用于分布式系統(tǒng)中。其生成的ID號(hào)由64位二進(jìn)制數(shù)組成,可以轉(zhuǎn)換成16進(jìn)制或10進(jìn)制的字符串表示。 雪花算法的核心思想是將一個(gè)64位的二進(jìn)制數(shù)分成四部分,分別表示時(shí)間戳、數(shù)據(jù)

    2024年02月15日
    瀏覽(35)
  • spring boot中使用雪花算法生成雪花ID

    目錄 1、什么是雪花算法 2、雪花算法的優(yōu)缺點(diǎn) 3、spring boot項(xiàng)目中使用雪花算法使用 雪花算法(Snowflake)是一種生成全局唯一ID的算法,由Twitter公司開(kāi)發(fā)。它可以在分布式系統(tǒng)中生成全局唯一的ID,解決分布式系統(tǒng)中的數(shù)據(jù)合并和分片等問(wèn)題。 雪花算法生成的ID是一個(gè)64位的長(zhǎng)

    2024年02月02日
    瀏覽(23)
  • 分布式—雪花算法生成ID

    分布式—雪花算法生成ID

    由64個(gè)Bit(比特)位組成的long類(lèi)型的數(shù)字 0 | 0000000000 0000000000 0000000000 000000000 | 00000 | 00000 | 000000000000 1個(gè)bit:符號(hào)位,始終為0。 41個(gè)bit:時(shí)間戳,精確到毫秒級(jí)別,可以使用69年。 10個(gè)bit:工作機(jī)器ID,可以部署在1024個(gè)節(jié)點(diǎn)上。 12個(gè)bit:序列號(hào),每個(gè)節(jié)點(diǎn)每毫秒內(nèi)最多可以生成

    2024年02月11日
    瀏覽(20)
  • 分布式唯一ID 雪花算法

    分布式唯一ID 雪花算法

    ?????????個(gè)人主頁(yè):五敷有你? ? ?? ???系列專(zhuān)欄:算法分析與設(shè)計(jì) ??穩(wěn)中求進(jìn),曬太陽(yáng) 雪花算法是 64 位 的二進(jìn)制,一共包含了四部分: 1位是符號(hào)位,也就是最高位,始終是0,沒(méi)有任何意義,因?yàn)橐俏ㄒ挥?jì)算機(jī)二進(jìn)制補(bǔ)碼中就是負(fù)數(shù),0才是正數(shù)。 41位是時(shí)間戳

    2024年04月10日
    瀏覽(24)
  • 雪花算法ID生成器工具類(lèi)

    可以通過(guò)配置bean添加到容器,注入使用

    2024年02月15日
    瀏覽(28)
  • 分布式id解決方法--雪花算法

    分布式id解決方法--雪花算法

    uuid,jdk自帶,但是數(shù)據(jù)庫(kù)性能差,32位呀。 mysql數(shù)據(jù)庫(kù)主鍵越短越好,B+tree產(chǎn)生節(jié)點(diǎn)分裂,大大降低數(shù)據(jù)庫(kù)性能,所以u(píng)uid不建議。 redis的自增,但是要配置維護(hù)redis集群,就為了一個(gè)id,還要引入一套redis。費(fèi)事,成本高。 如果有序自增別人就知道你的業(yè)務(wù)量多少了。 分布式

    2024年02月04日
    瀏覽(23)
  • 雪花算法生成分布式主鍵ID

    直接上代碼,復(fù)制即可使用 在這個(gè)示例中,你可以通過(guò) SnowflakeIdGenerator.init(dataCenterId, workerId); 初始化數(shù)據(jù)中心 ID 和工作 ID,然后通過(guò) SnowflakeIdGenerator.generateId(); 靜態(tài)方法生成 Snowflake ID 的字符串形式。

    2024年02月22日
    瀏覽(23)
  • 線上使用雪花算法生成id重復(fù)問(wèn)題

    線上使用雪花算法生成id重復(fù)問(wèn)題

    項(xiàng)目中使用的是hutool工具類(lèi)庫(kù)提供的雪花算法生成id方式,版本使用的是5.3.1 雪花算法生成id方式提供了getSnowflake(workerId,datacenterId)獲取單例的Snowflake對(duì)象,并對(duì)生成id的方法nextId()進(jìn)行了synchronized加鎖處理。 IdUtil Snowflake 項(xiàng)目中使用雪花算法 IdUtils 舉例controller UserController 線上

    2023年04月23日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包