Entity Framework の非同期: 予期しないパフォーマンスのボトルネック
非同期コントローラーとデータベース操作 (ToListAsync()
の代わりに ToList()
を使用) に移行すると、多くの場合、アプリケーションのパフォーマンスが向上します。 ただし、常にそうとは限りません。 最近のシナリオでは、非同期メソッドに切り替えると、クエリの実行が大幅に遅くなりました。 単純なデータベース結合を使用して「アルバム」オブジェクトを取得する次のクエリは、この問題の例です。
<code class="language-csharp">var albums = await this.context.Albums .Where(x => x.Artist.ID == artist.ID) .ToListAsync();</code>
生成された SQL クエリは次のとおりです (簡潔にするために省略されています)。
<code class="language-sql">SELECT [Extent1].[ID] AS [ID], [Extent1].[URL] AS [URL], [Extent1].[ASIN] AS [ASIN], ...</code>
以上がEntity Framework の非同期操作が同期操作より遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。