0

こんにちは友人
私は、それぞれ平均 3 KB のデータベースに数千のテキスト ファイルを格納するアプリケーションを持っています。そして、より頻繁に検索されたそれらについての簡単な情報を格納する別のテーブル。140,000 件のレコードがあると、データベースのパフォーマンスが非常に遅くなります。

これらのファイルをディスクに保存して、データベースのサイズを約 80% 削減できると考えました。これらのファイルは、表示 (ファイルの内容の読み取りと表示) の目的でのみ保存され、それらに対するデータベース操作のためには保存されません。しかし、私のWebサイトには約1000人のユーザーがいて、これらのファイルをディスクに保存すると、最悪の事態になるのではないかと心配しています(ディスクI/O操作が増加し、別のセッションでファイルを読み取ると、ハードディスクのヘッドを前後に移動するI/Oが増加する可能性がありますプラス私1 つのスレッドのみでファイルの読み取りを制御することはできません)

関連する経験を持っている人はいますか?
私のためにこの決定を下してください。どうもどうも

4

2 に答える 2

2

より多くの情報がなければ、パフォーマンスの問題の原因をより深く調べることをお勧めします。クエリは効率的ですか、クエリをサポートするインデックスはありますか。

ファイルをデータベースに保存することに関しては、興味深いことです。原則として、ファイルをディスクに保存し、ファイルへの参照のみを保存するという個人的な意見しか言えません。データベース内のパス。ただし、ここで考慮すべき多くの長所と短所があります。1 つのことは、バックアップがデータベース バックアップ以上のものにまたがる必要があるということです。

于 2010-12-04T15:39:07.960 に答える
1

私はあなたのコメントPlease make this decision for me. THANKS THANKSを文字通りに受け取ります。

  • db サーバーに少なくとも 8 ギガのメモリをインストールします (より良い SQL キャッシュ)

    2 つのディスクをミラーとして構成し、アプリケーション データベースのログ ファイルをミラーに配置します。このディスクを圧縮しないでください (ログ ファイルの書き込みが速くなります)。

    4 つのディスクを Raid 10 として構成し、データベースを Raid 10 に配置します。このディスクは圧縮しないでください (読み取りパフォーマンスは RAID 5 よりも優れています)。

    tempDB の場所として単一のディスクを構成します。このディスクを圧縮しない (tempDB のアクティビティを分離する)

    サーバー上で SQL Server のみを実行します。

    不足しているインデックスの動的管理ビューを調べて、データベースに正しいインデックスがあることを確認してください。

    データベースとインデックスの断片化を減らすためのメンテナンス計画がデータベースにあることを確認してください

    データベースから各「テキスト」ファイルを抽出して再ロードします。テキスト ファイルをロードする前に、選択したツールでファイルを圧縮 (zip) します。「テキスト」ファイルを varbinary データ型で保存します。表示する前にファイルを解凍するようにアプリケーションを構成します (「テキスト」を格納するための SQL のディスク IO とクライアントへのネットワーク IO を削減します)。

    既知のユーザー数と検索数でアプリケーションをベンチマークする

    クライアントの使用中にベンチマークを実際の値と比較する

    ディスク待機、ネットワーク IO、およびメモリを定期的に監視します。

それでもパフォーマンスが低い場合は、SQL DBA と契約してシステムを評価してください。このサイトの performanceDBA は契約ビジネスを行っていると思います。

于 2010-12-04T22:02:57.700 に答える