[解決済み】SELECT文におけるNOLOCKヒントの効果について
質問
本当のところはどうなんでしょうね。
ダーティーリードを気にしないのであれば で、(NOLOCK) のヒントは、SELECT文のパフォーマンスに影響を与えます。
- 現在のSELECT文
- その他の取引は、与えられたテーブルに対して
例
Select *
from aTable with (NOLOCK)
どのように解決するのですか?
1)
はい
でセレクトします。
NOLOCK
は、通常のセレクトよりも高速に完了します。
2)
はい
で選択すると
NOLOCK
を使用すると、影響を受けるテーブルに対する他のクエリが、通常のセレクトよりも高速に完了します。
なぜそうなるのでしょうか?
NOLOCK
通常(DBエンジンにもよるが)、データを渡してくれれば、それがどんな状態であろうと気にしないし、読み込むときにわざわざ静止させる必要もない、という意味だ。これは同時に、より速く、より少ないリソース消費で、非常に危険なことなのです。
システムクリティカルなもの、絶対的な正しさが要求されるものは
NOLOCK
を読み取ります。このデータには、クエリの実行中に削除された行や、まだ確定していない他のセッションで削除された行が含まれている可能性が絶対にあります。このデータには、部分的に更新された行が含まれている可能性があります。このデータには外部キー制約に違反するレコードが含まれている可能性があります。このデータには、テーブルに追加されたものの、まだコミットされていない行が含まれていない可能性があります。
データの状態を知る方法が本当にないのです。
もし、Row Countなどのサマリーデータのように、ある程度の誤差が許容されるようなものを取得しようとしているのなら
NOLOCK
は、これらのクエリのパフォーマンスを向上させ、データベースのパフォーマンスに悪影響を与えないようにするための良い方法です。
常に
NOLOCK
ヒントが返すデータには十分な注意を払い、怪しんで扱うようにしましょう。
関連
-
[解決済み】データベースへの「ネイティブ」SQL接続を使用するとはどういう意味ですか?
-
[解決済み] ORA-01821: ISO 8601 のローカルタイム付き日付のフォーマットが認識されないエラー
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQL Server の "with (nolock)" とは何ですか?
-
[解決済み】SQL Server SELECT INTO @variable?
-
[解決済み] SQL Server NOLOCKと結合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 "指定された集約関数を含まないクエリを実行しようとしました。"
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み] 2つの列を分割するには?
-
[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。
-
[解決済み] ora-06553 pls-306 'ogc_x' の呼び出しで引数の数または種類が誤っている。
-
[解決済み] Ruby On Rails で NuoDB を使用して SQL コマンドを手動で実行する方法
-
[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] VBA - ADODB.CommandTextの実行
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)