-1

こんにちは専門家:)私はSQLサーバーでwpfを使用しています

問題 1: 大量のデータが作成され、毎秒 db に保存する必要がありますが、同時にプログラムの複数の部分が同じテーブルに書き込みます。データベースメソッドは高価であるため、毎秒データベースに保存することは効率的ではありません。専門家は同意しませんか、それとも私は何をすべきですか? 最適な方法がわからない場合、xml またはテキスト ファイルがより役立つのはいつですか?

問題2:ライブグラフに表示できるように、問題1が保存されているテーブルからデータベースからデータを取得する必要があります。これにより、読み取り/書き込みの問題が発生しますか?

4

4 に答える 4

1
  1. 大量のデータを1つずつロードするinsertsことはお勧めできません。SqlBulkCopyを見てみてください

  2. データベースは同時実行性を非常にうまく処理します。完全な書き込みが行われたときにデータだけを表示するために、適切なトランザクションで書き込みを分離できます。

于 2012-10-04T09:47:41.247 に答える
0

別のオプションは、テーブルを分割することです。

他の関数は、レコードのフィールドのサブセットのみに書き込みますか?

したがって、1 つは初期データ用、もう 1 つは functionA 用の 2 つのテーブル間に 1 対 1 のマッピングがあります。バックエンドのニーズをどれだけうまく分割できるかによって異なりますが、衝突を大幅に減らすことができます。

基本的な考え方は、テーブルをオブジェクトのように見ることです。したがって、ベース テーブルがあり、それがタイプ 1 の場合は、関連するテーブルに 1 対 1 のリンクを追加します。タイプ 1 に関連するビジネス関数は、エンティティ テーブルではなく、そのテーブルに書き込むだけで済みます。

とにかく可能性。

于 2012-10-04T10:12:30.757 に答える
0

1Cachingデータを永続化するために使用できます。Cacheクラスで保存できます

リンク: http://msdn.microsoft.com/en-us/library/system.web.caching.cache.add.aspx

2 2 番目のシナリオでは問題ありません。トランザクションを使用して、コミットされたデータを確実に取得できます。

リンク : http://msdn.microsoft.com/en-us/library/system.transactions.transaction.aspx

于 2012-10-04T09:45:52.393 に答える
0

時間制限があることを考えると、1秒で何らかの方法でデータを処理する必要があります。

私は提案します:

問題 1 : に注入されたチャンクで生成したデータを保存しますStack<..>チャンクをDBにStack<..>保存する別のスレッドプロセスの後、空でなくなるまで。データをメモリに保存した後、1 秒でデータを保存できるという保証はありません。Stack<..>

問題 2 : 既にメモリ内にあると、割り当てられた許容可能なメモリ制限内に留まり、最大限のパフォーマンスを実現できます。

パフォーマンスは常に厳密にドメイン固有であり、簡単な質問では完全に説明できないため、ここで本当に実用的なものを提案することは困難です。しかし、解決策は、基本的なガイドラインのように取ることができます。

于 2012-10-04T09:45:59.850 に答える