Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ hình ảnh trong cơ sở dữ liệu trực tiếp hay dưới dạng dữ liệu base64?

Tôi cho rằng hình ảnh (tệp) thường KHÔNG được lưu trữ trong cơ sở dữ liệu được mã hóa base64. Thay vào đó, chúng được lưu trữ ở dạng nhị phân thô trong cột hoặc tệp nhị phân (blob).

Base64 chỉ được sử dụng như một cơ chế vận chuyển, không phải để lưu trữ. Ví dụ:bạn có thể nhúng hình ảnh được mã hóa base64 vào tài liệu XML hoặc thư email.

Base64 cũng thân thiện với luồng. Bạn có thể mã hóa và giải mã nhanh chóng (mà không cần biết tổng kích thước của dữ liệu).

Mặc dù base64 có thể vận chuyển tốt, nhưng không lưu trữ hình ảnh của bạn được mã hóa base64 .

Base64 không cung cấp tổng kiểm tra hoặc bất kỳ giá trị nào để lưu trữ.

Mã hóa Base64 tăng yêu cầu lưu trữ lên 33% so với định dạng nhị phân thô. Nó cũng làm tăng số lượng dữ liệu phải được đọc từ bộ lưu trữ liên tục, vốn vẫn là nút thắt cổ chai lớn nhất trong lĩnh vực máy tính. Nói chung, đọc ít byte hơn và mã hóa chúng nhanh hơn. Chỉ khi hệ thống của bạn bị ràng buộc CPU thay vì bị ràng buộc IO và bạn thường xuyên xuất hình ảnh trong base64, thì hãy xem xét lưu trữ trong base64.

Hình ảnh nội tuyến (hình ảnh được mã hóa base64 được nhúng trong HTML) tự nó là một nút thắt cổ chai - bạn đang gửi thêm 33% dữ liệu qua đường truyền và thực hiện theo trình tự (trình duyệt web phải đợi hình ảnh nội tuyến trước khi có thể tải xong trang HTML).

Nếu bạn vẫn muốn lưu trữ hình ảnh được mã hóa base64, vui lòng, dù bạn làm gì, hãy đảm bảo rằng bạn không lưu trữ dữ liệu được mã hóa base64 trong cột UTF8 rồi lập chỉ mục nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để kiểm tra xem mysql_query có trả lại kết quả nào không?

  2. PHP / MySQL Chèn giá trị rỗng

  3. Làm việc với MyISAM trong MySQL

  4. chia nhỏ từ khóa cho bài php mysql

  5. SQL Internal Join - Cách nối 3 bảng trong SQL và MySQL