1. ホーム
  2. sql-server

[解決済み] SQL Server の "with (nolock)" とは何ですか?

2022-03-15 21:26:48

質問

を使用することの意味について、どなたか説明してください。 with (nolock) を使うべきか、使わないべきかについて教えてください。

例えば、トランザクション率が高く、特定のテーブルに多くのデータがある銀行アプリケーションの場合、どのような種類のクエリであれば nolock は問題ないのでしょうか? また、常に使用すべきケースと、絶対に使用すべきでないケースがあるのでしょうか?

どのように解決するのですか?

WITH (NOLOCK) はトランザクションの分離レベルとして READ UNCOMMITED を使用するのと同じです。つまり、コミットされていない行を読んでしまい、その後にロールバックされてしまう、つまり、データベースに入っていないデータを読んでしまう危険性があります。つまり、他の操作によって読み込みがデッドロックになるのを防ぐことが出来ますが、リスクが伴います。高いトランザクションレートを持つ銀行アプリケーションでは、おそらく、この方法で解決しようとしている問題に対する正しい解決策にはならないでしょう。