Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo checksum tổng hợp cho cột trong MySQL bằng CRC32

Tóm tắt

Dùng hàm CRC32() kết hợp SUM() để tạo checksum tổng hợp cho toàn bộ cột – hữu ích cho so sánh dữ liệu, phát hiện thay đổi.

Cú pháp

SELECT SUM(CRC32(cot_can_checksum)) AS aggregate_checksum
FROM ten_bang;

Ví dụ

1. Tạo bảng

CREATE TABLE CRC32Demo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserId VARCHAR(20)
);

2. Dữ liệu

INSERT INTO CRC32Demo (UserId) VALUES ('USER-1'), ('USER-123'), ('USER-333');

3. Tính checksum

SELECT SUM(CRC32(UserId)) FROM CRC32Demo;

4. Kết quả

+---------------------+
| sum(crc32(UserId))  |
+---------------------+
| 3142885447          |
+---------------------+

Đặc điểm CRC32

  • Trả về số nguyên không dấu 32-bit (0 đến 4,294,967,295).
  • Nhanh, đơn giản, nhưng có khả năng va chạm (collision) – không dùng cho bảo mật.
  • Thứ tự hàng ảnh hưởng kết quả SUM (vì cộng dồn). Dùng ORDER BY nếu cần nhất quán.

So sánh với CHECKSUM TABLE

CHECKSUM TABLE ten_bang;
-- Trả về checksum cấp bảng (cấu trúc + dữ liệu), thay đổi khi ALTER TABLE.

SUM(CRC32()) linh hoạt hơn: checksum một cột, nhiều cột, có điều kiện WHERE.