6

データベースの読み取りロックを回避するにはどうすればよいですか?

複数のデータベースへの回答を歓迎します!

4

5 に答える 5

3

SQL Serverでは、selectステートメントでwith(nolock)キーワードを使用できます。例えば:

Select table1.columna, table2.columna
from table1 with(nolock), table2 with(nolock)

クエリの各テーブル/ビューにwith(nolock)を指定してください。

于 2008-08-31T21:01:20.623 に答える
2

PostgreSQLもMVCC(Multi-Version Concurrency Control)を使用するため、デフォルトのトランザクション分離レベル(読み取りコミット)を使用して、誰かがDBの保守(列/テーブル/インデックスの削除/追加など)を行っていない限り、ブロックしないでください。 。

于 2008-09-01T04:04:17.190 に答える
2

ジェフ・アトウッドはこのトピックについて良い投稿をしています:

http://www.codinghorror.com/blog/archives/001166.html

于 2008-08-31T21:03:29.760 に答える
2

Oracleのデフォルトの動作モードは、読み取りコミット分離レベルであり、selectステートメントは、読み取っているデータを変更する別のトランザクションによってブロックされません。データの同時実行性と一貫性から:

トランザクションによって実行される各クエリには、(トランザクションではなく)クエリが開始される前にコミットされたデータのみが表示されます。Oracleクエリは、ダーティ(コミットされていない)データを読み取ることはありません。

于 2008-08-31T21:21:44.507 に答える
2

Firebird では、ライターがリーダーをブロックすることはなく、ダーティ リードもありません。コミット済み読み取りおよびスナップショット分離レベルのみ。
単純なページまたはレコードのロックの代わりに、多世代エンジン (オラクルのような) を使用します。

于 2008-08-31T21:43:03.987 に答える