使用自增主鍵、UUID的優缺點


自增主鍵 


這種方式是使用數據庫提供的自增數值型字段作為自增主鍵,它的優點是: 

  1. 數據庫自動編號,速度快,而且是增量增長,按順序存放,對於檢索非常有利; 
  2. 數字型,占用空間小,易排序,在程序中傳遞也方便; 
  3. 能夠保證獨立性,程序可以在不同的數據庫間遷移,效果不受影響。
  4. 保證生成的ID不僅是表獨立的,而且是庫獨立的,這點在你想切分數據庫的時候尤為重要。

缺點 :

  1. 因為自動增長,在手動要插入指定ID的記錄時會顯得麻煩,尤其是當系統與其它系統集成時,需要數據導入時,很難保證原系統的ID不發生主鍵沖突(前提是老系統也是數字型的)。特別是在新系統上線時,新舊系統並行存在,並且是異庫異構的數據庫的情況下,需要雙向同步時,自增主鍵將是你的噩夢; 
  2. 在系統集成或交接時,如果新舊系統主鍵不同是數字型就會導致修改主鍵數據類型,這也會導致其它有外鍵關聯的表的修改,后果同樣很嚴重; 
  3. 若系統也是數字型的,在導入時,為了區分新老數據,可能想在老數據主鍵前統一加一個字符標識(例如“o”,old)來表示這是老數據,那么自動增長的數字型又面臨一個挑戰。
  4. 如果經常有合並表的操作,就可能會出現主鍵重復的情況
  5. 很難處理分布式存儲的數據表。數據量特別大時,會導致查詢數據庫操作變慢。此時需要進行數據庫的水平拆分,划分到不同的數據庫中,那么當添加數據時,每個表都會自增長,導致主鍵沖突。

UUID

優點:

  1. 能夠保證獨立性,程序可以在不同的數據庫間遷移,效果不受影響。
  2. 保證生成的ID不僅是表獨立的,而且是庫獨立的,這點在你想切分數據庫的時候尤為重要。

缺點:

    1. 比較占地方,和INT類型相比,存儲一個UUID要花費更多的空間。
    2. 使用UUID后,URL顯得冗長,不夠友好。
    3. 沒有內置的函數獲取最新產生的UUID主鍵。
    4. 很難記憶。Join操作性能比int要低。
    5.  UUID做主鍵將會添加到表上的其他索引中,因此會降低性能。

原文入口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM