問題タブ [dirtyread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - Postgresでのダーティリード
新しい行を挿入する必要がある長時間実行関数があります。この機能の進行状況を確認するにはどうすればよいですか?
ダーティリードが機能すると思っていたので、http://www.postgresql.org/docs/8.4/interactive/sql-set-transaction.htmlを読んで、次のコードを考え出し、新しいセッションで実行しました。
Postgresで構文エラーが発生します。私は何が間違っているのですか?正しく実行すると、その長い関数がまだ実行されている間に挿入されたレコードが表示されますか?
ありがとう
sql - SOのようなサイトのデータアクセス戦略-ソートされたSQLクエリとソートに影響する同時更新?
StackOverflowまたはMyLifeIsAverageにアクセスパターンが似ているGrailsWebアプリに取り組んでいます。ユーザーはエントリに投票でき、投票数に基づいてエントリのリストを並べ替えるために投票が使用されます。ソートされた選択クエリが実行されている間に投票を行うことができます。
selectはテーブルの大部分をロックするため、通常のトランザクションロックにより、更新に永久に時間がかかるようです(十分なトラフィックがある場合)。誰かがこのようなデータアクセスパターンでアプリに取り組んだことがありますか?もしそうなら、これらの更新と選択を多かれ少なかれ同時に行うことを許可する方法を見つけましたか?SOのようなサイトがこれにどのようにアプローチするか知っている人はいますか?
私の考えは、ソートされた選択をダーティリードにすることでした。なぜなら、それらが常に完全に最新でなくても許容できるからです。これは、これらの選択と更新のパフォーマンスを改善するための私の唯一のアイデアですが、誰かがもっと良い方法を知っているかもしれないと思いました。
sql-server-2005 - 選択は DML によって干渉されますか
クリーン読み取り (コミットされた読み取り) を使用する場合... 選択クエリは別の DML (挿入、更新、削除) クエリによって干渉されますか? はいの場合、いくつかのケースを提供できますか。SQL Server 2005 を使用しています。
以下のクエリが誤ったデータを生成する可能性は何ですか。クエリは結合を使用せず、いくつかの基準に基づいて単一のテーブルからデータをフェッチするだけです。
objective-c - Objective-C で別のスレッドによってロックされている可能性のあるオブジェクトの「ダーティ リード」を行う最良の方法
次の方法が、別のスレッドによってロックされている可能性のあるオブジェクトを読み取ってコピーするための最良の方法であるかどうか疑問に思っていましたか?
問題のオブジェクトをロックして、オブジェクトを配列に追加または削除する次のようないくつかのメソッドがあります。
linq - エンティティフレームワーク-これはダーティリードを行いますか?
Webアプリのエンティティコードに少しリンクがあります。基本的に、アプリがダウンロードされた回数をカウントします。私はこれが起こるかもしれないと心配しています:
- セッション1はダウンロード数を読み取ります(例:50)
- セッション2はダウンロード数を読み取ります(ここでも50)
- セッション1はそれをインクリメントし、データベースに書き込みます(データベースストア51)
- セッション2はそれをインクリメントし、データベースに書き込みます(データベースストア51)
これは私のコードです:
これが発生する可能性はありますか?どうすればそれを防ぐことができますか?
ありがとう、フィデル
nhibernate - NHibernate PocoEntityTuplizer がエンティティを「ダーティ」に設定しています。どうすればこれを止めることができますか?
データベース内の一部のオブジェクトは、存在しないリレーションシップに 0 を使用します。そこで、NullableTuplizer クラスをセットアップします。このコードをオンラインで見つけました。これまでのところ機能していますが、問題に気付きました。エンティティが選択された直後にダーティになるという大きな問題がありました。そのため、このオブジェクトに対する Get() の直後に、そのオブジェクトはダーティであり、NHibernate はそれをデータベースに保存しようとします。
これらの「マッピングの問題」を防止しようとしています。本当に汚れていないことを知らせる方法を知っている人はいますか?
sql-server - SQL を更新してデッドロックを無効にする方法を教えてください。
この SQL を頻繁に実行する必要がある
ダーティ リードまたはダーティ ライトを許可することはできますが、デッドロックを回避する可能性を最大にする方法はありますか?
編集
OK、@Tomtome これはデッドロックではないかもしれません。それは私にとって朗報です。
ここで、新しい質問をフォローアップします。お役に立てば幸いです。
また、データを読み取る必要があるため、使用します
これはトランザクションではなく、単純な 1 行の SQL であり、ダーティ リードを許可する場合は、デッドロックを回避するためnolock
に使用する必要がありますか?SET TRANSACTION ISOLATION LEVEL
EIDT AGAIN
SET ISOLATION LEVEL to READ UNCOMMITTED と WITH NOLOCK は同じことだと思います。完了しました。みんな、ありがとう、
sql-server - Read Committed Isolation Level によるダーティ リードの防止
私は簡単な質問から始めます:
Wikipedia およびMsdnの Dirty Read の定義によると 、次のようになります。
T1 と T2 の 2 つの同時トランザクションがあります。
T1 が行を更新しており、T2 が T1 によって「まだコミットされていない」行を読み取っている場合、ダーティ リードが発生します。
ただし、Read Committed レベルでは、データが読み取られるとすぐに共有ロックが解放されます (トランザクションの終了時やステートメントの終了時でさえありません)。
では、Read Committed はどのようにダーティ リードを防止するのでしょうか? Bkaz 更新された行 T2 で解放された共有ロックが更新された行を読み取ることができ、t1 が操作全体をロールバックできるようになるとすぐに、t1 の手でダーティ リードが発生します。
java - H2を実行しているときのDB2構文(制限およびダーティ読み取り)(DB2モード)
現在、単体テストを試みているメソッドがいくつかあります。これらのメソッドは、SpringJdbcTemplatesを使用してDB2v8に対して(実稼働環境で)正常に実行されています。
各SQLは、ステートメントに「WITH UR」を追加することにより、「ダーティリード」を許可します。また、「FETCH FIRST1ROWSONLY」などを追加して「limit」を使用するものもあります。
これは実際のDB2に対しては正常に機能しますが、これらのメソッドをインメモリデータベースに対して単体テストしたいと思います。ここでH2が入ります。
「WITHUR」と「FETCHFIRST..」を削除すればすべて正常に機能しますが、メソッドを変更したくはなく、バックエンドデータベースを変更するだけです。
私が見る限り、構文が異なるため(MODE = DB2を使用していますが)、H2を使用してこれを直接行うことはできません。
さて、何をしますか?別のインメモリデータベースを使用する必要がありますか?メソッドを変更したり、「テスト」機能/ハックを追加したりしたくないので、それはダメです。
アイデアも同様に大歓迎です!
編集
それが私なのか、何なのかはわかりませんが、次のエラーが発生します。Spring3.1とH21.3.166を使用しており、データベースのURLは「jdbc:h2:〜/ testdb; MODE=DB2」であることに注意してください。SQLはH2コンソールで実行しているときに機能しますが、単体テストからは機能しないため、失敗する理由がわかりません(壊れているのはH2ではないと推測します)。
編集#2誰かが同じ問題を抱えている場合は、ここで私が見つけたものです。私は以下を使用していました:
これは、Springが汎用Beanを使用してデータソースを再インスタンス化するため、設定が失われたことを意味します。解決策(私の場合)は、次のようにプログラムでデータベースをロードすることでした。