リアルタイムのデータを取得してデータベースに挿入するアプリケーションがあります。1 日 4.5 時間オンラインです。17 のテーブルに 1 秒ごとにデータを挿入します。ユーザーはいつでも、最新の 2 番目のデータと履歴内のいくつかのレコードについて任意のテーブルにクエリを実行できます...
フィードと挿入の処理は、C# コンソール アプリケーションを使用して行われます...
ユーザー要求の処理は、WCF サービスを通じて行われます...
挿入がボトルネックであることがわかりました。ほとんどの時間はそこに費やされます。テーブルと指標を微調整するために多くの時間を費やしましたが、結果は満足のいくものではありませんでした
十分なメモリがあると仮定すると、データベースの代わりにメモリにデータを挿入するベスト プラクティスは何ですか。現在、毎秒更新および挿入されるデータテーブルを使用しています。私たちの同僚は、フィード ハンドラーと WCF ユーザー要求ハンドラーの間のデータベースではなく、別の WCF サービスを提案しました。WCF 中間層は TCP ベースであると想定されており、データを独自のメモリに保持します。フィード ハンドラーは、2 つのプロセス間に中間層を設ける代わりにユーザー リクエストを処理するかもしれないと言うかもしれませんが、フィード ハンドラーがクラッシュした場合でも、現在のレコードをユーザーに提供できるようにするために、物事を分離したいと考えています。
時間は限られていますが、短期間ですべてを記憶に移したいと考えています。2 つのプロセスの途中で WCF を使用するのは悪いことですか? リクエストがオーバーヘッドを追加することはわかっていますが、これら 3 つのプロセス (フィード ハンドラー、メモリ内データベース (WCF)、ユーザー リクエスト ハンドラー (WCF)) はすべて同じマシン上にあり、帯域幅はそれほど多くありません。問題の。
手伝ってください!