IBMのADO.NET実装を使用して、AS400上のDB2データベースにアクセスしています。接続文字列を取るDb2Connectionオブジェクトがあります。すべてがかなり標準的であり(多くの例があります)、すべて正常に動作しています。ADO.NETを使用したdb2(AS400)アクセスの接続プール制限
私たちの問題は、大規模なマイグレーションが必要であり、マイグレーションの仕事がデータベースに対してかなりのクエリを行う必要があるということです。私たちの移行はいくつかのタスクを並行して分割することができます - 残念ながら、パフォーマンスの向上は線形ではありません(二倍のスレッド数<倍速)。私たちのテストでは、ボトルネックがDb2Connectionであることが示されています。プールで何かをしなければならないと仮定します。私たちはDB2データベースから読み込み、SQLデータベースにデータを保存するだけです。この問題は発生しません(DB2の読み込みは減りますが、SQL書き込みを維持すると速度が大幅に向上します)。私たちは、プールのMinSize/MaxSize値とスレッドの量で対処しようとしましたが、効果は最小限に抑えられています。並列タスクのクエリが連続して実行されているようです。
私の質問:Db2Connectionプールのアクティブな接続(オープンリーダー)の量にはいくつかの上限がありますか?接続文字列にMaxSizeを設定しても影響はありません。したがって、サーバーには何らかの制限がありますか?それ以外にはクエリを絞ることができますか?
データベースのパフォーマンスが同時接続の数とともに直線的に増加するとは思っていません。並列タスクが本当に独立している場合は、デフォルトの接続分離レベルを変更することを検討してください。 – mustaccio
サーバー側で 'WRKACTJOB JOB(QZDASOINIT)'コマンドを実行すると、リクエストを処理するジョブが表示されます。複数のものが表示されます。どのような地位がありますか?ロック待ち(LCKW)は問題を示します。おそらく@mustaccioのような分離レベルが示唆されました。 – Charles