さて、私は何をどのようにすべきかについて少し混乱しています。私は並列プログラミングとスレッド化の理論を知っていますが、私の場合は次のとおりです。
特定のフォルダに多数のログ ファイルがあります。これらのログ ファイルをデータベースで読み取ります。通常、これらのファイルの読み取りには数時間かかります。シリアル方式で行うためです。つまり、各ファイルを反復処理し、次に各ファイルの SQL トランザクションを開いてログをデータベースに挿入し、次に別のファイルを読み取って同じことを行います。
現在、CPU のすべてのコアを消費できるように並列プログラミングを使用することを考えていますが、各ファイルにスレッドを使用するかどうかはまだ明確ではありません。システムに違いはありますか? つまり、たとえば 30 個のスレッドを作成した場合、それらはシングル コアで実行されますか、それとも Parallel で実行されますか? どうすれば両方を使用できますか?彼らがまだそれをしていない場合は?
編集:私は、10K HDD 速度、4 コア CPU、4 GB RAM、ネットワーク操作なしのシングル サーバーを使用しています。SQL Server は、OS として Windows 2008 と同じマシン上にあります。[それが役立つ場合はOSを変更できます:)]。
EDIT 2:あなたのフィードバックに基づいて確認するためにいくつかのテストを実行します.4 GB RAMを搭載したi3クアッドコアCPUで見つけたものは次のとおりです
CPU1 は 24 ~ 50% のまま、CPU2 は 50% 未満のまま、CPU3 は 75% のまま、CPU4 は約 0% のままです。はい、Visual Studio、eamil クライアント、および他の多くのアプリケーションを開いていますが、これは、CPU4 が 0% のままであるため、アプリケーションがすべてのコアを使用していないことを示しています。
RAM は常に 74% のままです [テスト前は約 50% でした]。これが読み取りの設計方法です。だから、心配することは何もありません
HDD は読み取り/書き込みのまま、または使用値は 25% 未満のままであり、SQL トランザクションが最初にメモリに格納され、メモリがしきい値に達したときにディスクに書き込むため、正弦波で 25% に急上昇します。
ここではすべてのリソースが十分に活用されていないため、作業を分散して効率化できると思います。あなたの考えをもう一度。ありがとう。