数据库主键到底是用自增长好还是UUID好?

文章讨论了数据库主键选择,指出snowflake算法在自增ID和UUID之间的优势,如存储空间小、速度快捷、适合分布式系统,并强调其时间序列特性。适合大规模并发场景,可作为数据库主键的高效解决方案。
摘要由CSDN通过智能技术生成
之前在参加长沙互联网大会的时候问过微信DBA一个问题,数据库主键到底是用自增长好还是UUID好?DBA回答:自增长好,因为自增长有占用空间小、索引快等特点。但这一定是最好的吗?最近在做一个项目刚好也遇到了同样纠结的问题,其实这个问题我已经查过很多资料也问过很多人了,最后总结归纳下,仅供大家参考。


其实针对使用自增长还是UUID,大家讨论最多的就是速度和存储空间,这里我加入了安全性和分布式,具体对比如下:


使用自增长做主键的优点:
1、很小的数据存储空间
2、性能最好
3、容易记忆
使用自增长做主键的缺点:
1、如果存在大量的数据,可能会超出自增长的取值范围
2、很难(并不是不能)处理分布式存储的数据表,尤其是需要合并表的情况下
3、安全性低,因为是有规律的,容易被非法获取数据
使用GUID做主键的优点:
1、它是独一无二的,出现重复的机会少
2、适合大量数据中的插入和更新操作,尤其是在高并发和分布式环境下
3、跨服务器数据合并非常方便
4、安全性较高
使用GUID做主键的缺点:
1、存储空间大(16 byte),因此它将会占用更多的磁盘空间
2、会降低性能
3、很难记忆
结合每个项目的实际应用,我们应该怎么选择呢?如下:


1、项目是单机版的,并且数据量比较大(百万级)时,用自增长的ÿ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值