亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL實現(xiàn)雪花Id函數(shù)

 更新時間:2023年11月01日 11:11:10   作者:JiaMu?Sun  
相比UUID無序生成的id而言,雪花算法是有序的,而且都是由數(shù)字組成,本文主要介紹了MySQL實現(xiàn)雪花Id函數(shù),具有一定的參考價值,感興趣的可以了解一下

環(huán)境 MySQL5.7

簡介

snowflake是Twitter開源的分布式ID生成算法,結果是64bit的Long類型的ID,有著全局唯一和有序遞增的特點。

show

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

雪花Id

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

雪花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

測試腳本

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

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

使用

調用語句

SELECT SnowId();

getSnowId

測試是否重復

CALL TestSnowId();

test

到此這篇關于MySQL實現(xiàn)雪花Id函數(shù)的文章就介紹到這了,更多相關MySQL 雪花Id內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

最新評論