2011-10-31 11 views
1

私はGDI +ライブラリを使って描かれたグラフィカルなjpg画像をもたらすユーザ入力を扱うサイトを開発しています。パフォーマンスを向上させるために、私はこれらの画像を一度生成してからディスクに保存します。後で参照するために、データベースから場所を取得します。各ユーザーの入力は約60kbの3つの画像(サムネイル、ズーム、pdfレポート)です。私たちは、1日にこれらの入力の100 - 1000を期待しています。BLOBにするか、画像をキャッシュしないでください

イメージをデータベースに保存することを検討しています(BLOBフィールド - 私はMySqlを使用しています)、イメージを表示するashxハンドラページを作成します。主な理由は、サーバーを別のサーバーに簡単に移動できるようにすることです(サーバーファイルシステムの読み取り/書き込み権について心配する必要はなく、dbとファイルのリンクが壊れても心配する必要はありません)。

このシナリオでは、この変更を行うことをお勧めしますか?パフォーマンスに重大なプラスまたはマイナスの変化がありますか?

答えて

4

パフォーマンスへの影響は、ハードウェア(RAM、SSDなど)とネットワーク(アプリケーションと同じマシン上にあるのですか?)に関するDB設定によって異なります。

私の経験では、これらのファイルは時々大きくなる傾向があり(DBのパフォーマンスが低下する)、ファイルシステムはどのDBよりもファイルを処理するために最適化されているので、ファイルシステムに固執することをお勧めします。

OTOHサイズ(最大60 KB)が十分にあり、DBが十分速い場合は、BLOBを他のフィールド(プライマリキー)のみの別のテーブルに配置してください。 BLOBと同じテーブルにメタデータなどを保存しないでください!しかし

一つの発言:

は、私は常に徹底した性能試験を行う(ユーザ/負荷をシミュレートし、プロファイラなどを使用)、このような変更を決定する前に... ASHXハンドラの2つのバージョンを作成することをお勧めします - 1つはパスのみのためにDBを使用し、ファイルシステムからファイルを配送し、2つ目はDB経由ですべてを行います。

関連する問題