default-character-set-for-mysql-8-is-utf8mb4 - keo ma cao

/imgposts/m3rpfr7m.jpg

Hôm qua khi tôi đang lật một game quay hũ đổi thưởng cuốn sách về MySQL, tôi nhận ra rằng kể từ phiên bản 8.0 trở đi, bộ mã hóa ký tự mặc định của cơ sở dữ liệu đã được thay đổi thành utf8mb4. Trong nhiều năm qua, tôi vẫn luôn có thói quen chỉ định thủ công bộ mã utf8mb4 và quy tắc sắp xếp (collation) mỗi khi tạo cơ sở dữ liệu mới... Tuy nhiên, bây giờ dường như tôi có thể bỏ qua bước này rồi.

Bộ mã hóa ký tự và quy tắc sắp xếp mặc định của máy chủ MySQL là utf8mb4 và utf8mb4_0900_ai_ci, nhưng bạn hoàn toàn có thể xác định các bộ mã khác nhau ở mức máy chủ, cơ sở dữ liệu, bảng, cột, thậm chí cả chuỗi văn bản.

Việc chỉ định bộ mã utf8mb4 cho MySQL trước đây chủ yếu nhằm hỗ trợ các biểu tượng cảm xúc emoji 😄. Ngày nay, khi emoji được sử dụng phổ biến hơn bao giờ hết, việc chọn utf8mb4 làm mã hóa mặc định thật sự rất hợp lý. Điều này giúp đảm bảo rằng mọi ký tự đặc biệt đều được lưu trữ chính xác mà không gặp vấn đề gì.

Tôi nghĩ mình cần dành thêm thời gian để đọc tài liệu chính thức của MySQL, nếu không kiến thức sẽ dễ dàng lỗi thời. Để tham khảo thêm, bạn có thể xem tài liệu chính thức của MySQL 8.0:

  • Utf8 chỉ có khả năng hỗ trợ các ký tự có độ dài từ 1 đến 3 byte.
  • Trong khi đó, Utf8mb4 có thể xử lý các ký tự lên tới 4 byte. Đặc biệt, các biểu tượng cảm xúc emoji thường được lưu trữ dưới dạng 4 byte. Vì vậy, để hỗ trợ đầy đủ emoji, bạn bắt buộc phải sử dụng utf8mb4.

Ngoài ra, trong tài liệu MySQL 8 cũng có nhắc đến rằng UTF8 (tương đương với utf8mb3) sẽ bị loại bỏ trong các phiên bản tương lai của MySQL. Thay vào đó, nên sử dụng utfmb3 hoặc tốt nhất là utfmb4:

UTF8 hiện tại là một từ đồng nghĩa ti le cuoc cũ của utf8mb3, và bạn nên chuẩn bị cho khả năng nó sẽ bị loại bỏ trong các phiên bản sau này của MySQL. Thay vì dùng UTF8, hãy sử dụng utfmb3 hoặc (ưu tiên hơn) utfmb4.

Như vậy, việc cập nhật kiến thức liên tục là vô cùng quan trọng để tận dụng tối đa hiệu suất và tính năng của MySQL!