×

Tạo UUID duy nhất với UUID() trong MySQL

UUID (Universal Unique Identifier) là một chuỗi ký tự duy nhất trên toàn cầu, được sử dụng rộng rãi trong các hệ thống và cơ sở dữ liệu để xác định duy nhất các đối tượng hoặc bản ghi. Trong MySQL, chức năng UUID() cung cấp một cách đơn giản và hiệu quả để tạo UUID duy nhất. Bài viết này sẽ hướng dẫn cách sử dụng hàm này trong MySQL một cách chi tiết và toàn diện.

Khái niệm cơ bản về UUID

UUID là một chuỗi có độ dài 36 ký tự, bao gồm bốn đoạn được ngăn cách bởi dấu gạch ngang (-). Ví dụ, một UUID sẽ trông như thế này: 550e8400-e29b-41d4-a716-446655440000. UUID được thiết kế để có xác suất trùng lặp cực kỳ thấp, nhờ vậy là giải pháp lý tưởng cho việc tạo các khóa chính duy nhất.

Cách tạo UUID trong MySQL

MySQL cung cấp hàm UUID(), cho phép tạo ra một UUID duy nhất mỗi khi hàm được gọi. Để sử dụng hàm này, bạn chỉ cần thực hiện một truy vấn đơn giản:

SELECT UUID();

Kết quả của truy vấn này sẽ là một chuỗi UUID. Ví dụ:

+--------------------------------------+
| UUID()                               |
+--------------------------------------+
| 550e8400-e29b-41d4-a716-446655440000 |
+--------------------------------------+

Ứng dụng UUID vào bảng

Để sử dụng UUID làm khóa chính trong một bảng, bạn có thể tạo một cột mới với kiểu dữ liệu VARCHAR và sử dụng hàm UUID() để gán giá trị cho cột này khi thêm mới bản ghi. Ví dụ:

CREATE TABLE sinhvien (
    id VARCHAR(36) PRIMARY KEY,
    ten VARCHAR(255) NOT NULL,
    tuoi INT NOT NULL
);

INSERT INTO sinhvien (id, ten, tuoi)
VALUES (UUID(), 'Nguyen Van A', 22),
       (UUID(), 'Tran Thi B', 21);

Trong ví dụ trên, cột id được thiết lập là khóa chính và được gán giá trị UUID cho mỗi bản ghi mới.

Kết hợp UUID với các hàm khác và trigger

Để tự động tạo UUID cho mỗi bản ghi mới, bạn có thể sử dụng trigger. Trigger sẽ tự động gán giá trị UUID cho cột id mỗi khi có một bản ghi mới được thêm vào bảng. Dưới đây là cách tạo trigger:

DELIMITER $$

CREATE TRIGGER before_insert_sinhvien
BEFORE INSERT ON sinhvien
FOR EACH ROW
BEGIN
    SET NEW.id = UUID();
END$$

DELIMITER ;

Trigger này sẽ đảm bảo rằng mỗi khi có một bản ghi mới được thêm vào bảng sinhvien, cột id sẽ tự động nhận giá trị UUID mà không cần can thiệp thủ công.

Lưu ý khi sử dụng UUID

  1. Kích thước lưu trữ: Mặc dù UUID giúp đảm bảo tính duy nhất, nó chiếm nhiều không gian lưu trữ hơn so với các định dạng dữ liệu khác như INT hay BIGINT.

  2. Hiệu suất: So với các khóa chính thông thường như INT, việc sử dụng UUID có thể làm giảm hiệu suất truy vấn, bởi kích thước và độ phức tạp của chuỗi UUID lớn hơn.

Kết luận

Sử dụng UUID() trong MySQL là một cách hiệu quả để tạo các giá trị duy nhất cho các bản ghi trong cơ sở dữ liệu. Nó đặc biệt hữu ích trong các ứng dụng phân tán và microservices, nơi đảm bảo tính duy nhất của các ID là rất quan trọng. Tuy nhiên, cần cân nhắc kỹ về không gian lưu trữ và hiệu suất truy vấn khi quyết định sử dụng UUID cho khóa chính trong bảng. Bằng cách hiểu rõ và áp dụng đúng cách, bạn có thể tận dụng tối đa ưu điểm của UUID trong các ứng dụng thực tiễn.

Comments