バイナリデータ/画像を使用したテーブルのパフォーマンス
-
16-09-2019 - |
質問
私は人々のメンテナンス画面を作りました。クライアントは、データベースにすべての人の写真を保存してほしいと思っていますが、問題なくそれを作りました。 ID_Personと画像の2つのフィールドを備えた画像用の別のテーブルがあります。
データベースで画像を使用して作業するのは初めてだからです。テーブルが1000/5000画像を超えて成長した場合、パフォーマンスの問題が発生しますか?すべての画像のサイズが違いを生むと思います。ユーザーがデータベースに非常に大きな画像を保存しないことを制御する必要があると確信しています。
良いサイズの制限は何ですか?クライアントは顔の写真だけを必要としますが、誰かが完全な品質の「最後のモデル」カメラで写真を作ろうとすると確信しています。
ありがとう。
解決
通常、画像のフォルダーを保持することが好まれ、DBはそのフォルダーだけを参照してください。理想的には、各人には一意のIDがあり、「画像」フォルダーのファイルがそのIDと一致します。
バイナリデータを実際に直接保存したい場合は、8kbのJPEG(約250x250 pix @ 25%Quality)で妥当な品質写真を入手できます。もちろん、これは印刷には受け入れられませんが、識別には問題ありません。
データベースサーバーで1行あたりの追加の8kbを受け入れることができるかどうかがわかります。
他のヒント
あなたがこのようにしなければならない場合、私はそれをそれぞれ数キロバイトに限定すると言います。ただし、世界のすべてのデータベース管理者は、おそらく画像をデータベースフィールドに吸収することは非常に悪い考えであることを伝えるでしょう。最も顕著なのは、データベースファイルのサイズが2ギガバイトを超えて成長すると、パフォーマンスが劇的に減少することがわかります。
Jheddingsが言ったように、各個人のIDがファイル名であるフォルダーを持っていて、ネットワーク共有で標準.jpgまたはその後のものを使用して、アプリを使用しているすべてのコンピューターが画像にアクセスできるようにすることを好みます。
一部の人は、単にIDを使用するだけでは十分ではなく、写真を削除またはアーカイブする必要がある場合には十分ではありません。画像。
顧客が絶対にネットワーク共有パスを持たない場合にのみ、画像をブロブします。
ID | blobのみのある別々のテーブルにある限り、その写真を取得するパフォーマンスの問題はありませんが、反対側ではdbを保持することを好みます。 ID 1を持つユーザーが/images /1.jpgに移動するため、実際に参照は必要ありません)