問題タブ [isolation-level]
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.
mysql - innodbとシリアル化可能なトランザクションを使用するMysqlは、(常に)行をロックしません
との取引がSELECT
ありますINSERT
。並行性の理由から、に追加FOR UPDATE
しましたSELECT
。ファントム行を防ぐために、SERIALIZABLE
トランザクション分離レベルを使用しています。これはすべて、テーブルに行がある場合は正常に機能しますが、テーブルが空の場合は機能しません。テーブルが空の場合、はSELECT FOR UPDATE
(排他的な)ロックを行わず、並行スレッド/プロセスはSELECT FOR UPDATE
ロックされずに同じものを発行できます。
この概念はSQLServerでは期待どおりに機能しますが、MySQLでは機能しません。私が間違っていることについて何か考えはありますか?
編集
display_orderにインデックスを追加しても、動作は変わりません。
database - READ_UNCOMMITTED vsトランザクションなし?
トランザクションの外部でSQLを実行することと、READ_UNCOMMITTED分離モードでSQLを実行することの違いは何ですか?
明確化: java.sql.Connection.TRANSACTION_NONEとjava.sql.Connection.TRANSACTION_READ_UNCOMMITTEDの違いを理解しようとしています
mysql - 単一フィールドでの信頼性の高いデ/インクリメントに必要な分離レベル
次のようなテーブルがあると想像してください。
また、2時間などの指定された期間、複数のユーザーがバニーを削除しています。(したがって、最小0のバニー、最大1000のバニー、バニーが返されますが、ユーザーによって追加されることはありません)
私は次のような2つの基本的なトランザクションクエリを使用しています
誰かがバニーを返すと、
誰かがバニーを連れて行こうとしたとき。私はそれらのクエリが内部である種の原子性を実装すると仮定しています
ユーザーが各国が持っているよりも多くのバニーをとることができないことが不可欠です(つまり、23人のユーザーが同時に取引する場合は-23バニー)
私の問題は、この場合、バニーフィールドを同時に追加/インクリメント/デクリメントしながら、境界(0〜1000)内にとどまりながら、ACIDの安全性を維持するにはどうすればよいですか?分離レベルをシリアル化に設定できますが、私はmは、パフォーマンスが低下するのではないかと心配していました。
任意のヒント?前もって感謝します
database - データベースの分離レベル
分離レベルの概念を理解しています。しかし、どのように、どこに設定しますか?私はこれを台無しにするJavaプログラムでそれを見たことがありません。
transactions - DB2で現在の分離レベルを取得するにはどうすればよいですか?
DBでトランザクションがどのように機能するかを学習しようとしています。これを行うために、次のテストSQLを作成しました。
このコードの実行後、1行がテーブルに追加されます。しかし、最初に次の行を追加すると、次のようになります。
すべてが期待どおりに機能します。つまり、トランザクションは正しくロールバックされ、DBに新しいエントリはありませんが、このコードを再度実行すると、DataStudioの最初の行にエラーが表示されます。
したがって、私の質問は次のとおりです。現在の分離レベルを取得する方法はありますか。また、分離レベルを1回以上設定できないのはなぜですか。
私はすべての答えとリンクに非常に感謝します。
PS。DB2 /iSeriesV5R4を使用しています。
PPS。私の悪い英語でごめんなさい
hibernate - 第2レベルのHibernateキャッシュとしてのJBossTreeCacheの並行性戦略の設定
JBossEAP4.3を使用しています。
現在、組み込みのJBossTreeCacheをHibernateの第2レベルのキャッシュとして使用する場合の同時実行戦略のさまざまなオプションを検討しています。私はそれを設定し、ログを調べてキャッシュが機能していることを確認しましたが、実際にどの同時実行戦略が使用され、どのように機能するのかわかりません。
エンティティごとに、注釈に次の「使用法」の値のいずれかを設定でき@Cache
ます:、、、、、。NONE
READ_ONLY
NONSTRICT_READ_WRITE
READ_WRITE
TRANSACTIONAL
一方、私のJBossTreeCache
構成ファイルでは、キャッシュ全体に対して次のいずれかに設定できます:、、、、、IsolationLevel
(または単に使用する)。NONE
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
OPTIMISTIC
構成オプションを1つずつ調べると、ドキュメントは非常に明確ですが、さまざまなオプションを組み合わせるとどうなるのでしょうか。
たとえば@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
、エンティティを設定したが、NONE
として設定しIsolationLevel
た場合、どうなりますJBossTreecache
か?
また、サポートと使用法JBossTreeCache
のみをサポートしていると思いますが、それらを何と組み合わせることができますか?たとえば、を使用するとどうなりますか?NONE
READ_ONLY
TRANSACTIONAL
IsolationLevel
NONSTRICT_READ_WRITE
全体として、ここには5x6の異なる組み合わせがあるはずですが、すべてが理にかなっているわけではありません。
誰かが私がこれを整理するのを手伝ってくれる?
spring - Spring アノテーションベースのトランザクションで分離レベルを設定する
私は自分のプロジェクトで注釈ベースのトランザクション管理を使用しています (@Transactional でいくつかのメソッドに注釈を付けています)。分離レベルをグローバルに設定したいと思います(各 @Transactional アノテーションの引数としてではなく)。
XMLでそれを構成することは可能ですか? 現在、私のxml構成には含まれています
何らかの方法で分離を tx:annotation-driven に追加することは可能ですか?
sql - SQL Server:競合状態を防ぐために排他ロックを取得する方法は?
次のT-SQLコードがあります。
コメントでマークされた「ロック」ハックを使用して、排他ロックを取得しています。
注:テスト目的でステートメントを分割し、途中でWAITFORコマンドを追加することでATOMIC性を破ったため、TABLOCKXまたはUPDLOCKヒントの使用は機能しません。私はそのようなものは欲しくない:
これは、2つの同時セッション(ロックテーブルを使用)を実行した後の正しい結果です。
これは、ロックをコメントアウトしてコードを実行した場合の誤った結果です。
そのようなハッキングなしでトランザクション全体の排他的ロックを取得するより良い方法はありますか?
mysql - mysql でクエリの分離レベルを表示する
特定のクエリで使用されている分離レベルを確認するにはどうすればよいですか? クエリが (サード パーティのアプリケーションによって) 実行された後、使用された分離レベル (たとえば、コミットされていない読み取り) を知りたいです。
明確にするために、私は現在、mysql 5.1 に対して実行される EF4 を使用するアプリケーションに取り組んでいます。特定の EF4 クエリの分離レベルを変更するために、さまざまなコーディング パターンをテストしようとしています。分離レベルが正しく設定されていることをテストして確認できるようにする必要があります。
c# - SQLiteでトランザクション分離レベルをReadUncommittedに設定するにはどうすればよいですか?
この投稿の回答によると、次のように述べています。
共有キャッシュを有効にしていて、両方の接続が同じスレッドからのものでない限り、ReadUncommittedがシリアル化された分離に戻ることをご存知ですか?
次に、C#で作業し、DLLインポートを次のように定義しました。
この関数を呼び出してキャッシュを有効にし、呼び出されたときに成功した結果ステータス0を取得しました。それでも、以下の行を実行して分離レベルをReadUncommittedに設定しようとすると、例外「isolationlevel」が発生します。
この質問は、私がここに投稿した別の質問に関連しています。
SQLiteで分離レベルがReadUncommittedのクエリを実行するにはどうすればよいですか?