主鍵 id 生成策略

2022-06-06 12:57:06 字數 707 閱讀 1286

1)資料庫自動增長 auto increment

優點:簡單方便

數字id天然排序,對分頁或結果需要排序很有幫助

缺點:不同資料庫語法和實現不同,資料庫遷移的時候或多版本支援的時候需要處理

在單個資料庫或讀寫分離或一主多從的情況下,只有乙個主庫可以生成,有單點故障的風險

比較難於擴充套件

分庫分表比較麻煩

2) uuid  每次生成隨機的唯一的值

優點:簡單方便

生成id效能非常好,基本不會有效能問題

全球唯一,在資料遷移,系統資料合併或者資料庫變更情況下,容易應對

缺點:沒有排序,無法保證遞增趨勢

使用字串儲存,查詢的效率比較低

傳輸資料量大

3)redis實現

主要依賴redis是單執行緒的,所以也可以用於生成全域性唯一的id。incr 和 incrby

優點:不依賴資料庫,靈活方便,且效能優於資料庫

資料id天然排序

缺點:如果系統中沒有redis,還需要引入新的元件

需要編碼和配置的工作量比較大

4) 雪花演算法 snowflake (mybatis-plus預設策略)

乙個long型的id

優點:不依賴於資料庫,靈活方便,效能優於資料庫

id按照時間在單機上是遞增的

缺點:如果設計分布式環境,每台集器上的時鐘不可能完全同步,有時候不能保證全域性遞增

主鍵生成策略

一共是13種,其中包括native native 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity 自增主鍵生成機制 native就是將主鍵的生成工作交由資料庫完成,hibernate不管 很常用 uuid 採用128位的uuid演算法...

主鍵生成策略

原文 generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue st...

主鍵生成策略

1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence...