GUID总结

     最近在做数据库设计,对于主键ID特意的纠结了一番,纠结后也做了个小小的总结。

  一、GUID简介

1.概念

globally unique identifier(GUID——全局唯一标识符),由网卡上的标识数字(每个网卡都有唯一的标识号)以及CPU时钟的唯一数字生成的一个16字节、128位的数字标识符,

用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。

 2.GUID的格式

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。

例如:A11679C8-9866-444A-899B-3894E47AE04B 即为有效的 GUID 值。

 3.特点

 (1)GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。

(2)世界上的任何两台计算机都不会生成重复的 GUID 值。

 (3)需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。

 (4)GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

 4.GUID生成

 (1) SQL Server : newid()

 (2) C#:  Guid.NewGuid()

 (3)  Java:UUID.randomUUID()

二、 GUID和自增ID优缺点对比

GUID优点:

(1)同 IDENTITY 列相比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用程序的后续处理提供了很大方便。

(2)便于数据库移植,其它数据库中并不一定具有 自增ID列,而Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的 GUID 值存入数据库,它不会对原有数据带来影响。

(3)便于数据库初始化,如果应用程序要加载一些初始数据,自增ID列的处理方式就比较麻烦,而GUID列则无需任何处理。

(4)便于对某些对象或常量进行永久标识,如类的 ClassID,对象的实例标识,UDDI 中的联系人、服务接口、tModel标识定义等。

GUID缺点:

(1)GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的。

(2)GUID 的值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些,这可能会带来两方面的消极影响,存储空间增大,索引时间较慢。

自增ID优点:占用空间小、无需开发人员干预、易读;

自增ID缺点:效率低,数据导入导出的时候麻烦复杂。 

转载于:https://www.cnblogs.com/Cynosure/archive/2012/12/05/2802469.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值