高頻面試題:自增ID/UUID/雪花算法
面試率極高的一道題,有幾位小伙伴都問到了這個問題,本期做個簡單的分享,供參考

特點:
數(shù)值類型,值遞增,由數(shù)據(jù)庫內(nèi)部生成
優(yōu)點:
是最簡單的方式,開發(fā)簡單,性能優(yōu)秀
缺點:
不適合分表分庫場景,會出現(xiàn)主鍵沖突,ID重復,這是硬傷
會有N+1次查詢問題,Java代碼想獲取ID,需要再查詢一次
特點:
字符串類型,值沒什么規(guī)律
優(yōu)點:
適用于分表分庫場景
UUID一般由Java代碼生成,Java不需要查詢就能知道ID
缺點:
性能不如自增
特點:
數(shù)值類型,由Twitter提供的分布式ID算法,遞增
優(yōu)點:
適用于分表分庫場景,就是為這場景而生的
由Java代碼生成,Java不需要查詢就能知道ID
所有需要生成唯一ID的都可用雪花算法,比如登錄token、日志編號等
缺點:
性能稍稍不如自增
生成的值較長,傳遞到前端number類型容易出現(xiàn)精度丟失,可以轉(zhuǎn)成字符串解決
如果是簡單的小項目,可以考慮用自增ID
如果是中大型項目,推薦用雪花ID
至于UUID,因為有雪花算法的存在,所以可以放棄UUID
但是,小項目我也建議用雪花算法。以后做的項目多了,就不至于一會是自增ID,一會是雪花ID,不至于思維跳躍
評論
圖片
表情
