問題タブ [sql-server-mars]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
148 参照

c# - .NET Framework + MARS (複数のアクティブ レコード セット) を使用した Azure 関数アプリ

v1 Azure 関数アプリがあります。クライアントは、組織が Framework に精通しており、.NET Core に移行していないため、.NET Framework を主張しているため、v1 である必要があります。

Azure Function Apps はマルチスレッドであり、MARS はスレッド セーフではないため、https: //docs.microsoft.com/en- us/sql/connect/ado-net/sql/enable-multiple-active-result-sets?view=sql-server-ver15 -.

最初は DbDataReader で実装され、DbDataAdapter でも実装されました。問題の SP は 2 つの結果セットを返し、1 秒未満で実行します。Function App と Azure SQL Server インスタンスは、同じ Azure リージョンにあります。

より詳細なプロファイル トレースを実行しましたが、要求が DataSet を埋めるのに 3 ~ 7 秒 (場合によってはそれ以上) かかります (そして、リーダーに戻ると言う前に、同じパフォーマンスが発生します)。これは、ゼロ行の結果セット用です。同様に、SP は 1 秒未満で実行されます。世界の別の場所 (英国の SQL、ZA の開発) からのネットワーク パフォーマンスであり、ヨーロッパからアフリカ (私たちが実行している場所) まで 1 秒未満で移動します。

詳細な調査では、塗りつぶしに時間がかかっています。

トレース

コードを最適化するためにできることはこれ以上ありません。

質問は:

  1. Azure Function Apps で安全に使用される接続文字列で MARS を有効にできますか?そうでない場合、なぜですか?
  2. .NET Framework Azure Function アプリ内で DataFills のパフォーマンスを向上させるにはどうすればよいでしょうか?

問題の関数アプリには他のメソッドなどがあります。MARS を使用できない場合、または別のパフォーマンスの微調整/調整がある場合、現在の考えでは、この特定のメソッド呼び出しをある種の v2 .NET Core 関数に分割する必要があります。アプリまたはパフォーマンスの高いデータ入力のためのその他の手段。

クライアントは非常にコストを意識しており (どのクライアントがそうではないでしょうか?)、Azure の追加リソースについては非常に慎重です。