如何生成分庫分表的全局id?

分庫分表的id生成方式

第一種,維護一個含有自增主鍵的單表。

創建一個全局唯一的含有自增主鍵的單表。
在操作分庫分表之前,先將數據插入到單表裏,生成主鍵,再操作分庫分表。
在這裏插入圖片描述
優點:簡單
缺點:會有性能瓶頸,比如不支持高併發操作。

第二種 uuid

UUID.randomUUID().toString();
在這裏插入圖片描述
優點:簡單易用,一行代碼可以保證這個數據的唯一性。
缺點:太長了,並不適合做主鍵。

第三種 業務字段 + 系統當前時間

如生成訂單號:時間戳 + 用戶id + 業務id

第四種 snowflake

64位id

id 表示:
0 10111001010011001000101001111111011011110 00001 00001 000000000001
2020-06-09 20:36:29 第一個機房的第一臺機器在這一毫秒內的第一個請求。

1bit 41bit 5bit 5bit 12bit
含義 1爲負數,0爲正數 時間戳(單位毫秒)對應的二進制 機房id 機器id 當前毫秒內該機房該機器產生的請求次數
舉例 0 1591706189534 對應的二進制:10111001010011001000101001111111011011110 00001 00001 000000000001

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章