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...