[解決済み】READ UNCOMMITTED分離レベルを使用する理由は?
質問
を使うことのデメリットとメリットをわかりやすく教えてください。
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
は、.NET アプリケーションおよびレポーティング・サービス・アプリケーションのクエリで使用できますか?
解決方法は?
この分離レベルではダーティリードが可能です。あるトランザクションは他のトランザクションによって行われたコミットされていない変更を見ることができます。
最高レベルの分離を維持するために、DBMSは通常データに対するロックを取得します。これは、並行性の損失と高いロック・オーバーヘッドをもたらす可能性があります。この分離レベルはこの性質を緩和します。
をチェックしておくとよいでしょう。
ウィキペディアの
READ UNCOMMITTED
をご覧ください。
また、ジェフ・アトウッド(Jeff Atwood)の ブログ記事 Stack Overflowの初期の頃、彼と彼のチームがどのようにデッドロックの問題に取り組んだかについてです。Jeffによると
しかし、それは
nolock
危険? になってしまう可能性があります。 で無効なデータを読み込んでしまう。read uncommitted
をつけるか?はい、理論的にはそうです。あなたは データベース アーキテクチャの宇宙飛行士が ACIDサイエンス が、ビルの火災報知器を鳴らすと を試したいと伝えるとnolock
. たしかに、理論は怖いですね。でも 私が思うに、理論的には、次のようなことが言えます。 との間に差はない。 実践することです。実践ではそうです。を使うことは決してお勧めしません。
nolock
一般的な "病気に効く "方法として。 データベース デッドロックの問題が発生する可能性があります。あなたは を診断してみる必要があります。 まず、問題を解決してください。しかし、実際には
nolock
を、単純でわかりやすい読み取り専用だとわかっているクエリに追加しても、問題になることはないようです...。 自分が何をやっているか分かっている限りはね。
の代替案として
READ UNCOMMITTED
レベルを検討するとよいでしょう。
READ COMMITTED SNAPSHOT
. 再びジェフを引用します。
スナップショットは、まったく新しいデータ変更追跡方法に依存しています。わずかな論理的な変更にとどまらず、サーバーが物理的に異なる方法でデータを処理する必要があります。この新しいデータ変更追跡方法を有効にすると、すべてのデータ変更のコピー、つまりスナップショットが作成されます。 競合時にライブデータではなく、これらのスナップショットを読み込むことで、読み込み時に共有ロックが不要になり、データベース全体のパフォーマンスが向上する可能性があります。
関連
-
[解決済み] パーセント値を保持するための適切なデータ型?
-
[解決済み] データセットに対するSSRSクエリの実行に失敗しました
-
[解決済み] SQL Serverのタイムスタンプ列をdatetime形式に変換する方法
-
[解決済み] SQL ServerでCreateステートメントを使用してtempテーブルを作成する方法は?
-
[解決済み] SQL ServerでBegin / End BlocksとGoキーワードを使用する?
-
[解決済み] 条件付きJOINステートメント SQL Server
-
[解決済み] クラスター化インデックスと非クラスター化インデックスの実際の意味は何ですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] SQL Server の "with (nolock)" とは何ですか?
-
[解決済み】Non-Repeatable ReadとPhantom Readの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プロシージャは 'ntext/nchar/nvarchar' 型のパラメータ '@statement' を想定しています。
-
[解決済み] 更新時のSqlエラー : UPDATE ステートメントが FOREIGN KEY 制約と競合しています。
-
[解決済み] SQL Server 2012 エラー: オブジェクト参照がオブジェクトのインスタンスに設定されていない
-
[解決済み] SSISで新しいレコードを挿入する前に、宛先テーブルを空にするにはどうすればよいですか?
-
[解決済み] データ損失の可能性があるため、スキーマの更新を終了します。
-
[解決済み] BCP - IDENTITY列を持つテーブルにインポートする際、キャスト指定に無効な文字値がある。
-
[解決済み] UPDATEエラーです。"REPLACEの引数1の引数データ型textは無効です"
-
[解決済み] SQLでテーブルの行数を数える
-
[解決済み] 日付から年内の週番号を取得する
-
[解決済み] SQL Serverでマテリアライズド・ビューを作成する方法は?