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

Độ chậm được tìm thấy khi hình ảnh cơ sở 64 chọn và mã hóa từ cơ sở dữ liệu

Theo nguyên tắc chung, không lưu tệp trong cơ sở dữ liệu.

Hướng dẫn sử dụng mysql nói gì về nó? http://dev.mysql.com/doc/refman/5.7/en/mis linh tinh-optimization-tips.html

Với máy chủ Web, lưu trữ hình ảnh và các tài sản nhị phân khác dưới dạng tệp, với tên đường dẫn được lưu trữ trong cơ sở dữ liệu chứ không phải chính tệp. Máy chủ MostWeb có khả năng lưu tệp vào bộ nhớ đệm tốt hơn nội dung cơ sở dữ liệu, do đó, việc sử dụng tệp thường nhanh hơn. (Mặc dù bạn phải tự xử lý các vấn đề sao lưu và lưu trữ trong trường hợp này.)

Hoàn toàn không lưu các tệp được mã hóa base4 trong cơ sở dữ liệu

Hoạt động tốt, nhưng mất quá nhiều thời gian mà tôi mong đợi. Do đó, hình ảnh có kích thước lớn hơn 33% và trông hoàn toàn cồng kềnh.

Như bạn đã phát hiện ra, chi phí không mong muốn trong mã hóa / giải mã + dung lượng thừa đã sử dụng hết, đồng nghĩa với việc truyền thêm dữ liệu qua lại.

Như @ mike-m đã đề cập. Mã hóa Base64 không phải là một phương pháp nén. Tại sao sử dụng mã hóa Base64 cũng được trả lời bởi một liên kết mà @ mike-m đã đăng Mã hóa cơ sở 64 được sử dụng để làm gì ?.

Trong ngắn hạn, không có gì để đạt được và nhiều thứ để mất bởi hình ảnh mã hóa base64 trước khi lưu trữ chúng trên hệ thống tệp, có thể là S3 hoặc cách khác.

Gzip hoặc các dạng nén khác mà không liên quan đến base64 thì sao. Một lần nữa câu trả lời là không có gì để được và mất nhiều. Ví dụ:tôi vừa nén một hình ảnh JPEG 1941980 và lưu 4000 byte, tiết kiệm 0,2%.

Nguyên nhân là do hình ảnh đã ở định dạng nén. Chúng không thể được nén thêm nữa.

Khi bạn lưu trữ hình ảnh mà không cần nén, chúng có thể được gửi trực tiếp đến trình duyệt và các ứng dụng khách khác và chúng có thể được lưu vào bộ nhớ đệm. Nếu chúng được nén (hoặc được mã hóa base64), chúng cần được giải nén bởi ứng dụng của bạn.

Các trình duyệt hiện đại có thể hiển thị hình ảnh base64 được nhúng vào HTML nhưng sau đó chúng không thể được lưu vào bộ nhớ đệm và dữ liệu lớn hơn khoảng 30% so với mức cần thiết.

Đây có phải là một ngoại lệ đối với tiêu chuẩn không?

Người dùng có thể đăng lên đó dữ liệu và hình ảnh và tất cả đều được bảo mật.

Tôi cho rằng ý của bạn là người dùng có thể tải xuống những hình ảnh thuộc về anh ta hoặc được chia sẻ với anh ta. Điều này có thể dễ dàng đạt được bằng cách lưu các tệp khỏi không gian web trong hệ thống tệp và chỉ lưu đường dẫn trong cơ sở dữ liệu. Sau đó, tệp được gửi đến máy khách (sau khi thực hiện các kiểm tra bắt buộc) bằng fpassthru

Còn khi tôi phát triển lên 100000 người dùng

Cách họ quan tâm đến tệp hình ảnh. Trong vấn đề hiệu suất, khi người dùng lớn tham gia, nó kết hợp với tôi, tôi cần 100000 thư mục cho 100000 sử dụng và thư mục con của họ. Khi số lượng lớn người dùng duyệt cùng một thư mục gốc, cách hệ thống tệp xử lý từng thư mục duy nhất.

Sử dụng CDN hoặc sử dụng hệ thống tệp đặc biệt thích hợp cho việc này như BTRFS

Cơ sở dữ liệu có cơ sở tìm kiếm tốt, kết nối an toàn luồng tốt, quản lý phiên tốt. Kịch bản này có thay đổi khi hoạt động lớn liên quan đến

Đúng vậy. Sử dụng nó tối đa bằng cách lưu tất cả thông tin về tệp và đường dẫn tệp của nó trong cơ sở dữ liệu. Sau đó, lưu tệp chính nó trong hệ thống tệp. Bạn nhận được tốt nhất của cả hai thế giới.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng tự động hóa để tăng tốc độ kiểm tra phát hành trên Galera Cluster With ClusterControl

  2. Các hàm tổng hợp trong MySQL không có mệnh đề GROUP BY

  3. Sử dụng strtotime cho các ngày trước năm 1970

  4. Mẹo để cung cấp hiệu suất cơ sở dữ liệu MySQL - Phần thứ hai

  5. Lưu trữ tệp trong cơ sở dữ liệu hệ thống tệp Vs