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

Sự khác biệt giữa cột GENERATED COLUMNS lưu trữ (STORED) và ảo (VIRTUAL) trong MySQL

Dưới đây là một số khác biệt cơ bản giữa cột tạo lưu trữ (STORED GENERATED COLUMNS) và cột tạo ảo (VIRTUAL GENERATED COLUMNS) trong MySQL:

Về mặt dung lượng đĩa

Nếu xét về dung lượng đĩa, cột tạo ảo (virtual generated columns) không chiếm dung lượng đĩa. Ngược lại, cột tạo lưu trữ (stored generated column) sẽ chiếm dung lượng đĩa.

Về mặt thao tác

Nếu xét về thao tác, cột tạo ảo là các thao tác INPLACE (nghĩa là định nghĩa bảng thay đổi mà không phải sao chép lại toàn bộ dữ liệu). Ngược lại, cột tạo lưu trữ là thao tác sao chép (copy operation) và có chi phí như thêm một cột mới vào bảng.

Về mặt tính toán

Trong cột tạo ảo, giá trị được tính toán ngay lập tức (on the fly) trong quá trình đọc (reading operation) và BEFORE triggers. Ngược lại, trong cột tạo lưu trữ, giá trị được cập nhật trong mọi câu lệnh INSERT và UPDATE.

Khi nào nên dùng

Nên cân nhắc sử dụng cột ảo (virtual columns) cho dữ liệu thay đổi thường xuyên (số lần thay đổi đáng kể). Chi phí của cột ảo đến từ việc đọc bảng liên tục và máy chủ phải tính toán mỗi lần giá trị cột đó sẽ là gì. Ngược lại, nên cân nhắc sử dụng cột lưu trữ (Stored Columns) khi dữ liệu không thay đổi đáng kể hoặc không thay đổi sau khi tạo.