自增量字段与GUID字段作为主键的区别

简单总结一下这两种字段的概念

1、自增量字段

自增量字段每次都会按顺序递增,可以保证在一个表里的主键不重复。使用也比较简单,只需在建表时声明为自增属性即可。

自增量的值是需要在系统中维护一个全局的数据值,每次插入数据时即对此值进行增量取值。当在增量产生唯一标识的并发环境中,每次增量取值都必须对此全局值加锁解锁保证增量的唯一性,这可能会牵扯一些性能问题。

  

2、GUID字段

在MS Sql数据库中可以在建立表结构时指定字段类型为uniqueidentifier,并且其默认值可以使用NewID()来生成唯一的GUID,使用NewID生成的比较随机。如:

insert into Table_Guid(GuidID,Name)values(NEWID(),'Test1')

在Sqlserver2005之后也可以使用NewSequentialid()来顺序生成,好处,在建立索引时就体现出来了,如:

create table mytable(ColA uniqueidentifier default newsequentialid(),col2 varchar(10))

GUID(全局统一标识符):指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,其算法是通过以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字生成。

下面简单比较一下两种方式的利弊

1、自增量在数据迁移或者导入数据的时候自增量有可能出现重复,分布式数据库中,不同数据库的同名表可能需要进行同步复制,也可能造成值重复。

2、GUID能保证唯一性,所以1中自增量所面临的问题就不在是问题了。

3、GUID的值比较长,占用数据库空间比较多,不过这个在目前看来已不是问题了,另外,就是不好记。

4、性能问题,在网上看到过有人做过测试,使用Guid作主键速度并不是很慢,它反而要比使用自动增长型的增量速度还要快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值