前言
在MySQL中,數(shù)據(jù)表的主鍵一般采用id字段自增的形式。使用自增ID給我們帶來不少便捷,但也有不少壞處,在一些場景下是不推薦使用自增ID的。
1.什么是自增ID
自增ID是在設計表時將id字段的值設置為自增的形式,這樣當插入一行數(shù)據(jù)時無需指定id會自動根據(jù)前一字段的ID值+1進行填充。在MySQL數(shù)據(jù)庫中,可通過sql語句AUTO_INCREMENT來對特定的字段啟用自增賦值 使用自增ID作為主鍵,能夠保證字段的原子性.
2.自增ID有什么好處
在添加一行時無需對自增id列賦值,在添加一行數(shù)據(jù)時可留空,會自動根據(jù)前一字段id值+1填充
單個表中能夠唯一標識該字段,保證原子性。在單個表中使用自增ID能夠保證主鍵不重復
3.自增ID有什么壞處
不存在連續(xù)性,也就是說若表中存有3行數(shù)據(jù),ID字段為1,2,3 那么當刪除字段2時就變?yōu)?,3,不具有連續(xù)性
合并表會出現(xiàn)ID重復的情況,上面說個使用自增ID能夠在單個表中保證ID字段唯一,但兩個表何為1個表,時不具有這種性質(zhì)的。
4.什么場景下不使用自增ID
正是因為自增ID的缺點也就是無法在多個表中,或者多個數(shù)據(jù)庫中保持ID主鍵唯一不重復,所以若是使用分布式數(shù)據(jù)庫以及數(shù)據(jù)合并的情況下時不能使用自增ID的。
若是能夠有其他的字段能作為主鍵保證唯一性,無需使用自增ID
5.自增ID的替代者UUI
UUID含義是通用唯一識別碼 (Universally Unique Identifier),指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。換句話說能夠在一定的范圍內(nèi)保證主鍵id的唯一性。
6.UUID存在的目的
UUID的目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。如此一來,每個人都可以創(chuàng)建不與其它人沖突的UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫創(chuàng)建時的名稱重復問題。也就完美解決的自增ID的缺點。
總結(jié)
根據(jù)自己項目實際情況來定?。?!沒有一套規(guī)定的方案適合任何一個系統(tǒng)。文章來源:http://www.zghlxwxcb.cn/news/detail-467865.html
更多可參考之前寫的文章:分布式唯一 ID 的 8 種生成方案文章來源地址http://www.zghlxwxcb.cn/news/detail-467865.html
到了這里,關(guān)于【數(shù)據(jù)庫】自增ID有什么壞處?什么樣的場景下不使用自增ID?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!