UUID UUID Generator

免费 · 无需注册 · 无需安装

UUID v7 生成器

生成以毫秒时间戳开头的 UUID v7,插入时天然有序,不会把数据库索引撑大。

  • 按时间排序
  • 毫秒精度
  • RFC 9562

UUID v7 生成器

v7
范围为 1 至 1000。
格式

结果 0

    所有值都在你的设备上用 Web Crypto API 生成,不会发送到浏览器之外的任何地方。 快捷键:Ctrl + Enter — 重新生成

    什么是UUID v7

    UUID v7 是 RFC 9562 新增的版本,用来解决主键场景下 v4 的排序问题。前 48 位是毫秒精度的 Unix 时间戳,让 UUID 按生成先后排在相邻位置;其余 74 位是随机数,保证同一毫秒内生成的值也不会重复。

    相比 v1,v7 不写入 MAC 地址,因此不会泄露机器信息;相比 v4,它保留了时间顺序。这就是它成为新系统主键默认选择的原因。

    使用方法

    1. 在下拉框里选择 v7
    2. 按需要设置数量,最多 1000 条。
    3. 点击生成 UUID 或按 Ctrl + Enter
    4. 下载 CSV,即可直接导入数据库。

    适用场景

    • 数据库主键,尤其是数据量大、写入频繁的表。
    • 需要按插入顺序分页的事件日志。
    • 既想有唯一性又希望保持时间相关性的场景。

    结构

    前 48 位是毫秒时间戳;接着 4 位是版本号(7);然后是 12 位随机数和 2 位变体;最后 62 位仍是随机数。

    UUID v7 的定位

    什么时候该用哪个选项
    选项何时使用
    v7毫秒 Unix 时间,简单且可排序
    v6100 纳秒精度并保留节点字段,用于与 v1 兼容
    v4散布在整个索引中,写入频繁的主键不宜使用

    UUID 各版本速查表

    版本可排序数据来源适合的场景
    v1不可以时间戳 + MAC 地址仍在依赖 v1 的既有系统
    v3不可以名称的 MD5 哈希必须使用 MD5 时的确定性标识符
    v4不可以122 位随机数绝大多数普通的唯一标识需求
    v5不可以名称的 SHA-1 哈希需要同一名称始终得到同一标识符
    v6可以重排后的时间戳既要随机性又要便于排序
    v7可以毫秒精度的 Unix 时间数据库主键和事件标识符
    v8不可以自定义位布局专有格式和实验性用途

    这七个版本都是 128 位,都用同样的 8-4-4-4-12 写法表示,区别只在于各个位代表什么。

    代码示例

    javascript

    // 浏览器目前不提供 v7,需自行实现或引入库
    const id = crypto.randomUUID();

    python

    # Python 3.14+
    import uuid
    id = str(uuid.uuid7())

    csharp

    // .NET 9+
    var id = Guid.CreateVersion7().ToString();

    sql

    -- PostgreSQL 18+
    SELECT uuidv7();

    常见问题

    为什么要用 v7 而不是 v4?

    当这些值会成为带索引的主键时。v4 是随机分布的,每次插入都落在 B 树的不同位置,索引碎片和写放大都会上升。v7 的值集中在树的末端,写入开销明显更低。

    v7 会暴露生成时间吗?

    会,而且是故意如此 —— 前 48 位就是毫秒时间戳,任何拿到这个值的人都能算出生成时间。如果创建时间本身是敏感信息,请改用 v4。

    v7 和 ULID 是一回事吗?

    两者思路相同,都把时间戳放在高位以保证排序。区别在于 v7 是 RFC 标准,128 位,用十六进制表示;ULID 使用 Crockford base32,字符串更短。