什么是 GUID?
GUID(全局唯一标识符)是微软对 UUID 标准的实现,是一个 128 位的标识符,用于在计算机系统中唯一标识信息。GUID 和 UUID 本质上是同一事物,只是名称不同。
快速了解
| 全称 | 全局唯一标识符 |
|---|---|
| 创建时间 | 1990 年代由微软创建(基于 UUID 标准) |
| 规范文档 | 官方规范 |
工作原理
GUID 是主要在微软技术(Windows、.NET、COM、SQL Server)中使用的术语,而 UUID 是其他地方使用的标准术语。两者遵循相同的格式:32 个十六进制数字,显示为 8-4-4-4-12。GUID 使用确保唯一性的算法生成,无需中央权威机构。在 .NET 中,Guid 结构提供了创建和操作 GUID 的方法。SQL Server 有 uniqueidentifier 数据类型用于存储 GUID。
主要特点
- 128 位标识符,与 UUID 相同
- 格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- UUID 的微软术语
- 广泛用于 Windows 和 .NET
- COM 组件由 GUID 标识(CLSID、IID)
- SQL Server uniqueidentifier 类型
常见用途
- COM 组件标识(CLSID)
- Windows 注册表键
- .NET 应用程序标识符
- SQL Server 主键
- Active Directory 对象标识符
示例
Loading code...常见问题
GUID 和 UUID 有什么区别?
GUID 和 UUID 是功能相同的 128 位标识符,都遵循相同的 RFC 4122 规范。GUID(全局唯一标识符)是微软在 Windows 和 .NET 环境中使用的术语,而 UUID(通用唯一标识符)是大多数其他平台和规范使用的标准术语。
两个 GUID 可能相同吗?
虽然理论上可能,但生成重复 GUID 的概率极低。有 2^128 种可能的组合,你需要生成约 27 亿亿个 GUID 才有 50% 的碰撞概率。在实际应用中,GUID 被认为是唯一的。
如何在 C# 或 .NET 中生成 GUID?
在 C# 中,使用 Guid.NewGuid() 生成新的 GUID。例如:Guid myGuid = Guid.NewGuid(); 这会创建一个版本 4(随机)GUID。可以使用 ToString() 转换为字符串,支持可选的格式说明符,如「N」(无连字符)、「D」(标准格式)、「B」(花括号)或「P」(圆括号)。
应该使用 GUID 作为数据库主键吗?
GUID 作为主键有利有弊。它们支持分布式 ID 生成而无需协调,且因不可预测而提高安全性。但它们比整数大(16 字节 vs 4-8 字节),可能导致索引碎片化,且更难调试。在高性能场景中,考虑使用顺序 GUID 或其他方案。
GUID 的格式是什么?
GUID 由 32 个十六进制字符组成,以 8-4-4-4-12 格式显示,如:3f2504e0-4f89-11d3-9a0c-0305e82c3301。标准表示包含连字符,但 GUID 也可以不带连字符存储,或根据上下文用花括号括起来。