この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 27|答える: 0

[ヒント] 高並行性EFコアクエリに対するWITH(NOLOCK)最適化

[リンクをコピー]
掲載地昨日20時48分 | | |
要件:記事内容、ページビュー、コメントなど、一部のデータはダーティーリーディングを許しますが、これは財務データほど厳密ではありません。 クエリ性能を向上させるためにReadUncommittedトランザクションを使うこともできますが、SqlTransactionやTransactionScopeにはリークアイソレーションレベルのバグがまだ修正されていないため、WITH(NOLOCK)ソリューションの使用を検討してください。

復習:
Entity Framework クエリ最適化 WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# は SQL 文を解析・実行するために SqlScriptDOM を使用しています
https://www.itsvse.com/thread-11222-1-1.html

SqlTransactionとTransactionScopeのリーク隔離レベル(このバグは8年間存在していますが、まだ修正されていません!) 多くの人が影響を受けているかもしれませんが、それに気づいていないかもしれません):ハイパーリンクのログインが見えます。

この記事ではSQL文を解析し、WITH(NOLOCK)を追加するためにSqlScriptDOMを参照する必要があります。オープンソースプロジェクトを参照してください:ハイパーリンクのログインが見えます。

ヌゲットの引用は以下の通りです。
新しいAllowDirtyReadAttribute.cs機能を作成し、コードは以下の通りです:
DbCommandInterceptorの特定のメソッドを上書きするために新しいWithNoLockInterceptorを作成します。コードは以下の通りです:
EF Coreに以下の構成で注入します:
コントローラーメソッドの上に追加するために使う[AllowDirtyRead]缶。

生のSQL文:
[o]を選択。 [同上],
         [o]。 [CustomerName]、
         [o0]。 [同上],
         [o0]。 [OrderId],
         [o0]。 [製品]
[命令]より[o]
             左外接合部
         [OrderLines] AS [o0]
         [o] の上。 [Id] = [o0]。 [OrderId]
ここで[o]。 [Id] = 1
順番は[O]です。 [同];

NOLOCKを追加した後に生成される文:
[o]を選択。 [同上],
         [o]。 [CustomerName]、
         [o0]。 [同上],
         [o0]。 [OrderId],
         [o0]。 [製品]
[命令]より[o]と(NOLOCK)
         左外接合部
         [OrderLines] [o0] (NOLOCK)
         [o] の上。 [Id] = [o0]。 [OrderId]
ここで[o]。 [Id] = 1
順番は[O]です。 [同];




先の:(MSSQL) SQL Server 全文検索、全文索引
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com