最近公司的CMS系统打算全面升级,在设计新的数据库的时候想到之前看到过用GUID做为主键的,但是一直没有用过,又不是特别的了解,于是从昨天开始查阅大量的资料,对与GUID有了一个初步的了解,现在简单的记录一下。
GUID简介:
即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
GUID格式:
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
GUID特点:
★GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。 ★世界上的任何两台计算机都不会生成重复的 GUID 值。★需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。 ★GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
GUID的优点:
- GUID有助于数据的转移
- 产生全球唯一标识,绝对不用重复
GUID的缺点:
- GUID数据过长为32位
- GUID为主键的话必须去掉主键的聚焦索引,不然会影响性能
以上内容只为自己做个小小的记录,如有不对的地方,还请大家指正,同时推荐几篇文章供大家学习与查看。
使用Guid做主键和int做主键性能比较
http://www.cnblogs.com/jackhuclan/archive/2010/01/04/1639005.html
GUID -Identity and Primary Keys
http://sqlteam.com/item.asp?ItemID=2599
GUID -Is not Always GOOD
http://bloggingabout.net/blogs/wellink/archive/2004/03/15/598.aspx
GUID -The Cost of GUIDs as Primary Keys
http://www.informit.com/articles/article.asp?p=25862&rl=1
GUID -Uniqueidentifier vs. IDENTITY
http://sqlteam.com/item.asp?ItemID=283