Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kelambatan ditemukan ketika gambar dasar 64 memilih dan mengkodekan dari database

Sebagai aturan praktis, jangan simpan file di database.

Apa yang dikatakan manual mysql tentang hal itu? http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-optimization-tips.html

Dengan server Web, simpan gambar dan aset biner lainnya sebagai file, dengan nama jalur yang disimpan dalam database daripada file itu sendiri. Sebagian besar server Web lebih baik dalam menyimpan file daripada konten database, membuat file biasanya lebih cepat. (Meskipun Anda harus menangani sendiri masalah pencadangan dan penyimpanan dalam kasus ini.)

Jangan simpan file yang dikodekan base4 dalam database sama sekali

Bekerja dengan baik, tetapi mengambil begitu banyak waktu yang saya harapkan. Oleh karena itu, gambar berukuran 33% lebih besar, dan benar-benar terlihat menonjol.

Seperti yang Anda temukan, overhead yang tidak diinginkan dalam encoding/decoing + ruang ekstra digunakan yang berarti transfer data ekstra bolak-balik juga.

Seperti yang telah disebutkan @mike-m. Encoding Base64 bukan metode kompresi. Mengapa menggunakan pengkodean Base64 juga dijawab oleh tautan yang diposting oleh @mike-m Untuk apa pengkodean basis 64 digunakan?.

Singkatnya, tidak ada keuntungan dan banyak kerugian dari pengkodean gambar base64 sebelum menyimpannya di sistem file baik itu S3 atau lainnya.

Bagaimana dengan Gzip atau bentuk kompresi lainnya tanpa melibatkan base64. Sekali lagi jawabannya adalah bahwa tidak ada untung dan rugi banyak. Misalnya saya baru saja melakukan gzip pada gambar JPEG 1941980 dan menyimpan 4000 byte yang berarti penghematan 0,2%.

Pasalnya, gambar sudah dalam format terkompresi. Mereka tidak dapat dikompresi lebih jauh.

Saat Anda menyimpan gambar tanpa kompresi, gambar dapat dikirim langsung ke browser dan klien lain dan dapat di-cache. Jika dikompresi (atau dienkode base64), file tersebut perlu didekompresi oleh aplikasi Anda.

Peramban modern dapat menampilkan gambar base64 yang disematkan ke HTML tetapi kemudian gambar tersebut tidak dapat di-cache dan datanya sekitar 30% lebih besar dari yang seharusnya.

Apakah ini pengecualian dari norma?

Pengguna dapat memposting data dan gambar di sana dan semuanya aman.

Saya kira maksud Anda pengguna dapat mengunduh gambar miliknya atau dibagikan dengannya. Ini dapat dengan mudah dicapai dengan menyimpan file dari ruang web dalam sistem file dan hanya menyimpan jalur dalam database. Kemudian file dikirim ke klien (setelah melakukan pemeriksaan yang diperlukan) dengan fpassthru

Bagaimana jika saya berkembang menjadi 100.000 pengguna

Bagaimana mereka mengurus file gambar. Dalam masalah kinerja, ketika pengguna besar terlibat, menurut saya, saya membutuhkan 100000 folder untuk 100000 pengguna dan sub foldernya. Ketika sejumlah besar pengguna menelusuri rootfolder yang sama, bagaimana sistem file memproses setiap folder unik.

Gunakan CDN atau gunakan sistem file yang khusus cocok untuk ini seperti BTRFS

Basis data memiliki fasilitas pencarian yang baik, koneksi aman yang baik, manajemen sesi yang baik. Apakah skenario ini berubah ketika operasi besar terlibat

Ya memang. Gunakan sepenuhnya dengan menyimpan semua informasi tentang file dan jalur filenya di database. Kemudian simpan file itu sendiri di sistem file. Anda mendapatkan yang terbaik dari kedua dunia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PERIOD_DIFF() Contoh – MySQL

  2. MySQL Menghapus Beberapa kunci Asing

  3. Kesalahan MySQL 1153 - Mendapat paket lebih besar dari byte 'max_allowed_packet'

  4. Apa yang Baru di ProxySQL 2.0

  5. Cara Menghubungkan Ke Server MySQL Setelah Menginstal XAMPP Di Mac OS