Bỏ qua đến nội dung chính
FreeOnlineTools Go
Tiếng Việt
So sánh

UUID v1 vs v4 vs v5: Nên Chọn Phiên bản Nào?

Bởi FreeOnlineTools Team · Đã cập nhật 2026-08-28

Trả lời nhanh

Dùng UUID v4 (random) mặc định —không cần phối hợp và rủi ro collision không đáng kể. Dùng v1 (time-based) chỉ khi cần ID time-orderable. Dùng v5 (namespace+name) cho ID deterministic. Tạo bất kỳ phiên bản bằng UUID Generator miễn phí.

Giới thiệu

UUID (Universally Unique Identifier) là định danh 128-bit render as 36 ký tự trong nhóm hex 8-4-4-4-12, vd 123e4567-e89b-12d3-a456-426614174000. RFC 9562 định nghĩa nhiều phiên bản; ba bạn gặp nhiều nhất là v1 (time + MAC), v4 (random) và v5 (namespace + name, SHA-1). Mỗi phiên bản trade-off khác nhau giữa đảm bảo duy nhất, sortable và determinism.

Từng bước một

  1. UUID v1 —dựa trên thời gian và nút

    v1 mã hóa dấu thời gian 60 bit hiện tại (khoảng thời gian 100 giây kể từ 1582-10-15) và ID nút 48 bit (thường là địa chỉ MAC). ID được tạo trên cùng một nút tăng dần và có thể sắp xếp theo thời gian. Rủi ro: địa chỉ MAC rò rỉ danh tính phần cứng và độ lệch đồng hồ giữa các nút có thể phá vỡ trật tự.

  2. UUID v4 —ngẫu nhiên

    v4 sử dụng 122 bit ngẫu nhiên (6 bit được cố định cho phiên bản/biến thể). Với 122 bit ngẫu nhiên, xác suất xảy ra xung đột giữa 2,71 nghìn tỷ ID là 50% - đối với bất kỳ khối lượng công việc thực tế nào, cơ hội thực tế là bằng không. v4 không cần phối hợp và không tiết lộ thông tin máy chủ, khiến nó trở thành mặc định an toàn nhất.

  3. UUID v5 —không gian tên và tên (SHA-1)

    v5 băm một không gian tên UUID và một chuỗi tên có SHA-1 để tạo ra ID 128 bit xác định. Cặp (không gian tên, tên) giống nhau luôn mang lại cùng một UUID, lý tưởng cho việc chống trùng lặp và ID ổn định bắt nguồn từ các khóa tự nhiên. v3 cũng có ý tưởng tương tự nhưng sử dụng MD5 (tránh nó).

  4. So sánh sự đánh đổi

    v1 có thể sắp xếp được nhưng rò rỉ MAC và cần đồng bộ hóa đồng hồ. v4 là ngẫu nhiên và riêng tư nhưng không thể sắp xếp được. v5 mang tính xác định và loại bỏ trùng lặp nhưng không ngẫu nhiên —việc đoán tên cho phép kẻ tấn công tái tạo UUID. Chọn dựa trên việc bạn cần thứ tự, tính ngẫu nhiên hay tính tất định.

  5. Chọn phiên bản phù hợp với trường hợp của bạn

    Khóa chính của cơ sở dữ liệu: v4 (hoặc v7 trong các hệ thống mới hơn để có thể sắp xếp theo thời gian). Hệ thống phân tán không có sự phối hợp: v4. ID xác định từ khóa tự nhiên (ví dụ: URL →UUID): v5. Nhật ký kiểm tra được hưởng lợi từ thứ tự thời gian: v1 với ID nút ngẫu nhiên được bảo mật.

Ví dụ

UUID v1 (dựa trên thời gian, có thể sắp xếp)

đầu vào: Được tạo vào lúc 2026-08-28T12:00:00Z trên nút 00:11:22:33:44:55

đầu ra: 1ef7c1d0-2d3b-11f0-8000-001122334455 (chữ số phiên bản '1', có thể sắp xếp theo thời gian)

UUID v4 (ngẫu nhiên)

đầu vào: Random generation

đầu ra: f47ac10b-58cc-4372-a567-0e02b2c3d479 (chữ số phiên bản '4', bit ngẫu nhiên)

UUID v5 (xác định từ không gian tên+tên)

đầu vào: Không gian tên DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8) + tên 'freeonlinetoolsgo.com'

đầu ra: 74738ff5-5367-5958-9aeb-0c1f1f1f1f1f (cùng một đầu vào luôn mang lại cùng một đầu ra)

Các vấn đề thường gặp

  • Lưu trữ UUID dưới dạng VARCHAR(36) thay vì loại BINARY/UUID 16 byte gốc: điều này gây lãng phí gấp đôi dung lượng lưu trữ và phá vỡ hiệu suất chỉ mục. Sử dụng loại cột UUID gốc nếu có.
  • Sử dụng v1 mà không bảo mật ID nút: địa chỉ MAC mặc định làm rò rỉ danh tính phần cứng và gây lo ngại về quyền riêng tư. Thay thế nó bằng giá trị 48 bit ngẫu nhiên bằng mật mã trên mỗi nút.
  • Giả sử va chạm v4 là không thể xảy ra: chúng không phải vậy - chúng chỉ khó xảy ra về mặt thiên văn. Với 122 bit ngẫu nhiên, bạn cần ~ 2,71 nghìn tỷ ID để có 50% cơ hội. Đối với 1 tỷ ID, cơ hội là ~ 0,0000000000000001.
  • Sử dụng v3 (dựa trên MD5) thay vì v5 (dựa trên SHA-1): MD5 bị hỏng, vì vậy v5 được ưu tiên. Cả hai đều mang tính quyết định, nhưng v5 có khả năng chống va chạm mạnh hơn.

Mẹo

  • Mặc định là v4 cho hầu hết mọi trường hợp sử dụng — nó là ngẫu nhiên, riêng tư và an toàn khi va chạm mà không cần bất kỳ sự phối hợp nào.
  • Nếu bạn cần ID ngẫu nhiên có thể sắp xếp theo thời gian, hãy xem UUID v7 (RFC 9562, 2024) kết hợp dấu thời gian Unix với các bit ngẫu nhiên —tốt hơn v1 cho cơ sở dữ liệu hiện đại.
  • Sử dụng v5 để tạo ID ổn định từ các khóa tự nhiên (URLs, địa chỉ email) để cùng một đầu vào luôn ánh xạ tới cùng một UUID —hữu ích cho việc chống trùng lặp và idempotent APIs.
  • Tạo UUID trên máy khách khi có thể để tránh phải quay lại máy chủ — Trình tạo UUID của chúng tôi chạy hoàn toàn trong trình duyệt của bạn bằng cách sử dụng crypto.getRandomValues().

Công cụ liên quan

Hướng dẫn liên quan

Tài liệu tham khảo