指定:SQL Server 2008 R2。いくつかのspeedinデータディスクを終了します。ログディスクの遅延。大量の挿入パフォーマンスを最適化する...?
必須:多くの挿入が必要です。 10.000〜30.000行と同様に、1秒あたり2つのインデックスを持つ単純なテーブルになります。挿入物の順序は短期間で維持されてはならない(すなわち、複数の平行な挿入物はOKである)ので、挿入物は本質的な順序を有し、繰り返さない。
これまでのところ、データをキューに蓄積しています。定期的に(非同期スレッドプール)、キューに入れられた作業項目に最大1024の項目を格納します。スレッドプール(カスタムクラス)には32のスレッドがあります。 32の接続を開きます。
問題:パフォーマンスは300倍になります.1秒あたり約100〜150行しか挿入されません。ログ待機時間は、SQL Serverの処理時間の40%〜45%(ms /秒)です。サーバーのCPU負荷が低い(4%〜5%程度)。
使用不可:バルクインサート。データはできるだけリアルタイムでディスクに書き込まなければなりません。これは、システムを実行するデータのアーカイブプロセスですが、定期的にデータにアクセスする必要のあるクエリがあります。私はそれらをディスクにダンプして、1秒に1-2回バルクアップロードを使って試してみることができます。これを試してみましょう。
誰でもスマートなアイデアですか?私の次のステップは、ログを高速ディスクセット(128GBの現代ssd)に移動し、その後何が起こるかを見ることです。大幅なパフォーマンスの向上は、おそらくかなり異なることになります。しかし、それでも....問題は実現可能かどうかです。
スマートなアイデアを発射してください。
から撮影しますか? – Carth