關系數據庫中,主鍵是標識表中唯一的實體,可能包括 ID、序列號、用戶名等。當記錄與主表中的主記錄有關系時,主鍵可以包含在另一個表的記錄中,如果將主鍵添加到另一個表中的記錄,則稱為“外鍵”。主鍵和外鍵之間的連接創建了多個表中數據集之間的關系。
數據庫表中主鍵的設置主要有三種方法,分別是:
自增id
這種主鍵非常常見,一般是從1開始遞增,每新增一條數據,id自增一次,當然也有自增n次的。
優點:
數據庫自動編號,速度快,而且是增量增長,聚集型主鍵按順序存放,對于檢索非常有利;
占用空間小,易排序,在程序中傳遞方便。
缺點:
不容易對數據進行遷移,比如將數據遷移到其他表中的時候,很容易會導致主鍵的沖突或者關聯關系的丟失;
很難進行分表和分庫,因為分表分庫的時候,多張表中的自增id會有重復的,導致主鍵不唯一。
uuid
UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構的標準,它保證對在同一時空中的所有機器都是唯一的。
當然uuid不是數據庫獨有的,uuid是分布式系統中的一種識別碼。
全局唯一,且具有安全性,即很難通過上一個主鍵id推斷出下一個主鍵id是多少;
數據遷移的時候,主鍵id無影響,不但遷移到其他的表無影響,遷移到其他的庫也沒有影響。
作為主鍵,UUID長度過長,主鍵索引KeyLength長度過大,影響索引查詢性能
InnoDB為聚集主鍵類型的引擎,數據會按照主鍵進行排序,由于UUID的無序性,且uuid 主鍵可能會引起數據位置頻繁變動,InnoDB會產生巨大的IO壓力,嚴重影響性能。
業務主鍵
在數據庫表中把具有業務邏輯含義的字段作為主鍵,比如身份證號、電話號碼等。
回答所涉及的環境:聯想天逸510S、Windows 10。
關系數據庫中,主鍵是標識表中唯一的實體,可能包括 ID、序列號、用戶名等。當記錄與主表中的主記錄有關系時,主鍵可以包含在另一個表的記錄中,如果將主鍵添加到另一個表中的記錄,則稱為“外鍵”。主鍵和外鍵之間的連接創建了多個表中數據集之間的關系。
數據庫表中主鍵的設置主要有三種方法,分別是:
自增id
這種主鍵非常常見,一般是從1開始遞增,每新增一條數據,id自增一次,當然也有自增n次的。
優點:
數據庫自動編號,速度快,而且是增量增長,聚集型主鍵按順序存放,對于檢索非常有利;
占用空間小,易排序,在程序中傳遞方便。
缺點:
不容易對數據進行遷移,比如將數據遷移到其他表中的時候,很容易會導致主鍵的沖突或者關聯關系的丟失;
很難進行分表和分庫,因為分表分庫的時候,多張表中的自增id會有重復的,導致主鍵不唯一。
uuid
UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構的標準,它保證對在同一時空中的所有機器都是唯一的。
當然uuid不是數據庫獨有的,uuid是分布式系統中的一種識別碼。
優點:
全局唯一,且具有安全性,即很難通過上一個主鍵id推斷出下一個主鍵id是多少;
數據遷移的時候,主鍵id無影響,不但遷移到其他的表無影響,遷移到其他的庫也沒有影響。
缺點:
作為主鍵,UUID長度過長,主鍵索引KeyLength長度過大,影響索引查詢性能
InnoDB為聚集主鍵類型的引擎,數據會按照主鍵進行排序,由于UUID的無序性,且uuid 主鍵可能會引起數據位置頻繁變動,InnoDB會產生巨大的IO壓力,嚴重影響性能。
業務主鍵
在數據庫表中把具有業務邏輯含義的字段作為主鍵,比如身份證號、電話號碼等。
優點:
缺點:
回答所涉及的環境:聯想天逸510S、Windows 10。