java UUID 和 自增主鍵 的優缺點

自增主鍵
自增ID是在設計表時將id字段的值設置爲自增的形式,這樣當插入一行數據時無需指定id會自動根據前一字段的ID值+1進行填充。在MySQL數據庫中,可經過sql語句AUTO_INCREMENT來對特定的字段啓用自增賦值 使用自增ID做爲主鍵,可以保證字段的原子性.sql

優勢數據庫

數據庫自動編號,速度快,並且是增量增加,按順序存放,對於檢索很是有利;
數字型,佔用空間小,易排序,在程序中傳遞也方便;
若是經過非系統增長記錄時,能夠不用指定該字段,不用擔憂主鍵重複問題。
缺點ui

由於自動增加,在手動要插入指定ID的記錄時會顯得麻煩,尤爲是當系統與其它系統集成時,須要數據導入時,很難保證原系統的ID不發生主鍵衝突(前提是老系統也是數字型的)。特別是在新系統上線時,新舊系統並行存在,而且是異庫異構的數據庫的狀況下,須要雙向同步時,自增主鍵將是你的噩夢;
在系統集成或割接時,若是新舊系統主鍵不一樣是數字型就會致使修改主鍵數據類型,這也會致使其它有外鍵關聯的表的修改,後果一樣很嚴重;
若系統也是數字型的,在導入時,爲了區分新老數據,可能想在老數據主鍵前統一加一個字符標識(例如「o」,old)來表示這是老數據,那麼自動增加的數字型又面臨一個挑戰。
UUID
UUID含義是通用惟一識別碼 (Universally Unique Identifier)uuid 項目應用 www.1b23.com,指在一臺機器上生成的數字,它保證對在同一時空中的全部機器都是惟一的。一般平臺會提供生成的API。換句話說可以在必定的範圍內保證主鍵id的惟一性。設計

優勢排序

出現數據拆分、合併存儲的時候,能達到全局的惟一性索引

缺點同步

影響插入速度, 而且形成硬盤使用率低
uuid之間比較大小相對數字慢很多, 影響查詢速度。
uuid佔空間大, 若是你建的索引越多, 影響越嚴重sql語句

相關文章
相關標籤/搜索