主鍵生成策略

2021-08-23 15:10:51 字數 1168 閱讀 9110

在建立資料庫的時候,需要為每張表指定乙個主鍵,所謂主鍵就是能夠 唯一標識表中某一行的屬性或屬性組,乙個表只能有乙個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新、刪除的時 候不會出現張冠李戴的錯誤。資料庫的主鍵生成有多種方式,每種方式都有其優點和缺點,應該根據不同的需求在主鍵的時間和空間效率上做平衡折中,從而選擇不 同的主鍵生成策略。歸納起來,對主鍵的選擇主要有以下四種方式:

1.自動增長字段

自動增長型字段允許我們在向資料庫新增資料時,不考慮主鍵的取值,記錄插入後,資料庫系統會自動為其分配乙個值,確保絕對不會出現重複。 2.

手動增長字段

手動增長型的字段,也就是說主鍵的值需要自己維護,通常情況下需要建立一張單獨的表儲存當前主鍵鍵值。 3.

guid型別

guid

是globally unique identifier

的縮寫,是乙個

128位的隨機數

,並保證不產生重複。 4.

comb型別

comb

(combine

)型可以理解為一種改進的

guid

,它通過組合

guid

和系統時間,以使其在索引和檢索事有更優的效能。

下表列出四種主鍵生成方式優缺點的比較:

主鍵生成策略

優點缺點

自動增長字段

1.使用簡單

1. 難以應用在多個資料庫間進行資料遷移的情況。

手動增長型字段

1. 可以確保資料合併過程中不會出現鍵值衝突

1. 增加一次資料庫訪問來獲取當前主鍵鍵值;

3. 直接生成guid,獲得最新鍵值以填充主鍵,使用方便;

2. 避免了前兩種方式獲取當前鍵值所增加的開銷。

1. 索引耗時;

3. 保留guid的已有優點;

2. 需要設計comb的生成演算法;

2. 在多表鏈結查詢時效率不如int型,但優於guid。

comb型別主鍵生成實現:

comb資料型別的基本設計思路是這樣的:既然guid資料因毫無規律可言造成索引效率低下,影響了系統的效能,那麼能不能通過組合的方式,保留guid的10個位元組,用另6個位元組表示guid生成的時間(datetime),這樣我們將時間資訊與guid組合起來,在保留guid的唯一性的同時增加了有序性,以此來提高索引效率。

主鍵生成策略

一共是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...