LINQ-TO-SQLでは、パフォーマンスを向上させるためにNOLockを使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/5044029

  •  15-11-2019
  •  | 
  •  

質問

私たちのDBAは、私たちのLINQクエリがデータベース上で何千ものロックを作成しているという情報を提供しました。私たちのチームの開発者がこのHanselman Postを私たちの問題の可能性のある解決策として掘り下げます:

> http://www.hanselman.com/blog/gettinglinqtosqlandlinqtoentIestousenolock.aspx < / P>

Scottは、nolockを設定するためにLINQで3つの方法を提供します。 1)トランザクションスコープ(優先)、2)スプロック3)context.executecommand

私たちは99%の読み取りのニュースサイトで、1%の書き込みがあるので、私たちの主な焦点は検索の速度です。 nolock すべてのLINQ-to-SQLクエリのための良い戦略は?

私が理解しようとしているのはなぜNolockを使っているのか良い考えではない理由です。私たちの同じ目標を持つ人々がたくさんあるはずです:多くの高速読み取り、更新はほとんどありません。 NOLockが明らかな答えであれば、なぜそれがデフォルトではないのですか?単一のデータコールごとに設定するのではなく、コンテキストのデフォルトでデフォルトにするのはなぜですか?

は、多くの速い読み取りのための本当に最高のオプション、いくつかのアップデートサイト?

アップデート:SQL Server 2005以降では、ノロックよりもスナップショット分離が優れていますか? 私はこれを見つけました > http://msdn.microsoft.com/en-us/library/ms179599.aspx. 読み取り済みスナップショットをカバーしている

。これによりwriteブロックが防ぎますが、ダーティデータは返されませんか?これはNolockの上の90%を使用するべきですか?

アップデート2:私を悩ませているのは

ほとんどを悩ませている部分は、ノーロックまたはスナップショットパターンを実装するために、すべてのLINQ-to-SQLクエリメソッドで変更する必要があります(アップデートで使用されているものを除く)。これは乾燥の大きな違反のように匂いがします。

役に立ちましたか?

解決

Worth noting: READ COMMITTED SNAPSHOT is (or at least was 2+ years ago) good enough for the site you're using.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top