問題タブ [database-locking]

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.

0 投票する
0 に答える
43 参照

performance - Cassandraのセットへの頻繁な追加のパフォーマンスは?

セット (Cassandra コレクション) に頻繁に値を追加しようとしています。次のようなスキーマ設計があります。

frequent_access_data( タイプ テキスト、値セット );

現在、各ストア操作 (より高速で、1 秒あたり 10000 レコードなど) で、次の更新ステートメントを実行しています。

更新頻度の高いアクセス データ セット値 = 値 + :new_value ここで type='TYPE1'"

したがって、そのステートメントでは、値のコレクションに new_value が既に存在する場合と存在しない場合があります。だから私はやみくもに更新を実行しています。どのくらい効率的ですか?

「if」句に違いはありますか?はいの場合、どうすればそれを活用できますか?

Cassandraは更新のために行をロックしません。本当 ?RDBMS はそれをロックし、更新を遅くするためです。

0 投票する
2 に答える
646 参照

database - データベースのロックが発生すると、どのデータがロックされますか?

私はそれを読みました

「複数のユーザーが同時にデータベースにアクセスする必要がある場合、ロックが発生します。」、( ref )

また

「データベースロックは、2人以上のデータベースユーザーがまったく同じデータをまったく同じ時間に更新するのを防ぐために存在します」 - ( ref ).

それでも、データベースのロックが発生したときにどのデータがロックされるのかわかりません。

最初の例では、2 人のユーザーが sql を実行して、同時に複数の行を選択します。ユーザー 1 が最初に実行されます。

ユーザー 1:select * from products where price > 100;

ユーザー 2:select * from products where price < 100;

ユーザー 1 のクエリは、ユーザー 2 のデータベースをロックしますか?

2 番目の例では、ユーザー 1 が製品テーブルを更新したいと考えています。ユーザー 2 は製品テーブルからデータを選択したいと考えています。ユーザー 1 が最初に実行されます。ユーザー 1 のアクションは、ユーザー 2 のデータベースをロックしますか?

ありがとう!

0 投票する
1 に答える
1302 参照

mysql - Lock-data: REPEATABLE-READ を使用した MySQL5.7.11 の supremum 疑似レコード

MySQL5.7.11、tx_isolation は REPEATABLE-READ です。

このような表:

session1 で、次のように実行します。

次に、session2 で次を実行します。

session2 がブロックされており、GAP ロックのために session2 がブロックされていると思いますが、information_schema.innodb_lock では、最高の疑似レコードと RECORD ロックを示しています。

MySQL_Doc は次のように説明しています。

なぜ Record Lock であり、lock_data が supremum 疑似レコードなのですか?

0 投票する
1 に答える
1030 参照

mysql - UPDATE ... MySQL の WHERE トランザクションは、サブクエリから参照される他のテーブルの行をロックしますか?

次のようなサブクエリを含む (InnoDB と REPEATABLE READ 分離レベルを使用して) MySQL で UPDATE ステートメントを発行する場合:

InnoDB エンジンは、テーブルから影響を受けるすべての行のみをロックしますか?それとも、クエリ全体の間bar、テーブル内のアクセスされたすべての行を(共有または排他的に) ロックしますか?foo

サブクエリの代わりにJOINに違いはありますか?

0 投票する
1 に答える
2930 参照

hibernate - hibernate は更新時のレコードのロックを防止します

DB 内のすべてのユーザーで実行され、「スコア」フィールドと「ヒット」フィールドを更新する長いプロセスがあります。これが実行されている間、ユーザーが自分の名前/電話などを更新しようとすると、ユーザーの更新が発生することがあります。次のエラーで失敗します:

問題は、ユーザーが自分のスコア/ヒット フィールドを更新できないことを知っているので、行がロックされないようにして、両方の更新を実行できるようにすることはできますか? (クエリは変更されたフィールドのみを更新するため、ロックを防ぐと思ったので、休止状態の@DynamicUpdateを使用していますが、運はありません)

ところで、私はSpring Boot 1.3.3.RELEASEをJava 8で使用しています(Tomcat.

* アップデート *

@Thierry の質問に答えるために、すべてのユーザー スコア/ヒットの更新に対して 1 つの大きなトランザクションを使用しています。すべてのユーザーを一度に更新する必要があります。また、このプロセスの実行中にユーザーがレコードを更新するのを防ぐことはできません。これは、システムの使用に悪影響を与えるためです。

*更新2 *

それで、たくさんの検索の後、私はまさに私が欲しいものを見つけたと思います. この記事によると: http://www.intertech.com/Blog/hibernate-optimistic-lock-without-a-version-or-timestamp/、ロック タイプがダーティで動的な更新で楽観的ロックを設定すると、次のようになります。別の方法では、他の並行プロセスが同じ列を変更しない限り、同じ行を更新できます。」問題は、エンティティを次のように設定したことです。

そして、私はまだロック例外を受け取ります。私はまだ何か間違ったことをしていますか?