首页 > 代码库 > GUID基本概念及C#、SqlServer中GUID基本用法
GUID基本概念及C#、SqlServer中GUID基本用法
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
GUID字符串形式格式是“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中x表示0-9或a-z中的任意字符,例如5ff62d65-492f-4b30-81b4-d0c23a4560dd就是一GUID字符串。
用C#中生成GUID(默认小写):
//生成新guid Guid guid1 = Guid.NewGuid(); Console.WriteLine(guid1.ToString()); //利用guid字符串构造出guid Guid guid2 = new Guid(guid1.ToString()); Console.WriteLine(guid2.ToString()); Console.ReadLine();
用Sql Server生成GUID(默认大写):
select NEWID()
Sql Server数据库表中数据类型是uniqueidentifier的列即存储GUID字符串。
缺点:
1.GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的。
2.GUID 值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着如果在数据库中使用 uniqueidentifier 列作为主键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。
优点:
1.同 IDENTITY 列相比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用程序的后续处理提供了很大方便。
2.便于数据库移植,其它数据库中并不一定具有 IDENTITY 列,而 Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的 GUID 值存入数据库,它不会对目标数据带来影响。
3.便于数据库初始化,如果应用程序要加载一些初始数据, IDENTITY 列的处理方式就比较麻烦,而 uniqueidentifier 列则无需任何处理,直接用 T-SQL 加载即可。
4.便于对某些对象或常量进行永久标识,如类的 ClassID、对象的实例标识等。
GUID基本概念及C#、SqlServer中GUID基本用法