問題タブ [database-concurrency]

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 投票する
1 に答える
49 参照

mysql - 単一のテーブル全体をロックしますが、MySQLの同じセッションで他のテーブルにアクセスできるようにします

セッションのためにMySQLで単一のテーブルをロックし、テーブルがまだロックされている間にそのテーブルをロックした同じセッション上の他のロックされていないテーブルで読み取りと書き込みを行うことは可能ですか?

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

optimistic-concurrency - Multiversion タイムスタンプ ベースの同時実行制御

タイムスタンプ ベースの同時実行制御では、トランザクション T_i で要素 x_k の書き込みを拒否する必要があるのはなぜですか?

ドキュメントに記載されているとおりです。

ここに画像の説明を入力

T_j がまったく更新を行う予定がない場合、T_i のアクションをそれほど制限する必要があるのはなぜですか?

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

hibernate - 共有データベースでの同時実行制御

複数のアプリケーションで共有されているデータベースがあるとします.1つのアプリケーションは永続性のためにORMベースのアプローチ(休止状態など)を使用し、別のアプリケーションは永続性のためにsqlを使用します.両方ともデータベースに書き込み操作を行います.

オプティミスティック ロック オプションを使用する場合、どうすれば同時実行制御を保証できますか? データが SQL を使用して挿入される場合、Hibernate は永続オブジェクトを自動的に同期します

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

mysql - SELECT と DELETE の同時実行

2回の取引があります。作成後に投稿にタグを割り当てるもの (トランザクション B)。別のトランザクション (トランザクション A) は、どの投稿でも使用されなくなったタグを削除します。投稿削除後に行っています。

取引A

取引B

取引A

取引B

両方のトランザクションで SELECT FOR UPDATE を使用できることはわかっていますが、タグを割り当てるだけのトランザクションをロックしたくありません。タグを削除しようとしているトランザクションがある場合にのみロックしたい。

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

asp.net-mvc-4 - ID 以外の列を自動インクリメントする Entity Framework / 同時実行の問題

私は2つのテーブルを持っています:

Campaigns.CampaignId はすべての CustomerId に固有です。したがって、ID にすることはできません。したがって、Web アプリから、キャンペーンの作成時に CampaignId を自動インクリメントする必要があります。以前は、1 つのトランザクションでロックを取得して、次に高いトランザクションを取得し、挿入を発行する必要がありました。並行性について心配したり効果的に管理したりすることなく、EF で同じことを達成するにはどうすればよいでしょうか。

キャンペーン コントローラーには、次のようなものがあります (UserContext はユーザーの現在の CustomerId を取得する静的ヘルパー クラスであり、db は私の DbContext です)。

しかし、このリスクは、同時実行性の高い環境で CustomerId ごとに値が重複するのではないでしょうか?

編集:

GUIDはオプションではなかったことを忘れていました。ID は整数でなければなりません。

編集2:

同じ CustomerId を持つことができる Users テーブルもあることに言及するのを忘れていました。ユーザーは同じ CustomerId を使用して複数のキャンペーンを作成できるため、同時実行の問題が発生する可能性があります。

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

sql-server - 読み取りコミット済みスナップショットのみを有効にする方法

SQL Server データベースで READ COMMITTED SNAPSHOT を使用したいのですが、これは SNAPSHOT ISOLATION とは異なると理解しています。

デッドロックの問題があるため、READ COMMITTED SNAPSHOT を有効にしたいと考えています。私は EF を使用していますが、これにより多くのデッドロックが防止されると思います。

他のいくつかの質問を読むと、次のことがわかります。

READ COMMITTED SNAPSHOT は楽観的な読み取りと悲観的な書き込みを意味し、SNAPSHOT ISOLATION は楽観的な読み取りと楽観的な書き込みを意味します。

READ COMMITTED SNAPSHOT はデータベース全体に対して機能しますが、SNAPSHOT ISOLATION はトランザクション レベルです。

READ COMMITTED SNAPSHOT のみを有効にしたい場合は、次の文で十分ですか? ALTER DATABASE [DB] SET READ_COMMITTED_SNAPSHOT ON;

または、この文も必要ですか?ALTER DATABASE [DB] SET ALLOW_SNAPSHOT_ISOLATION ON;

SQL ServerがREAD COMMITTED SNAPSHOTに使用するメカニズムが最後の文なしで有効になるかどうか完全にはわからないため、これを尋ねています

ありがとうございました

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

python - 同時リクエストの実行時に「無効なカーソル状態 (0)」を取得する (SQLAlchemy & wsgi/python)

WSGI python Web アプリで SQLAlchemy を使用して、データベースにクエリを実行しています。2 つの同時要求を行うと、2 番目の要求は常に例外をスローし、SQL Server は次のように述べています。

残念ながら、キャッシュを使用してデータベースへの追加のリクエストを防ぐことはできないようです。この問題を解決する別の方法はありますか? 理想的には、ネイティブの python ライブラリを使用しますか (つまり、別の python モジュールに依存しないでください)?

私が考えることができる唯一のことは、スレッドを使用してデータベースクエリを作成する関数をロックすることですが、これがアプリの速度を低下させるのではないかと心配しています.

他にできることはありますか?これは構成の問題ですか?

Centos 5.9 サーバーで FreeTDS v0.91 を使用し、MS SQL Server 2008 に接続しています。

webapp は Paste に基づいています。

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

sql-server - トランザクション分離レベルについて

私はこのトピックに不慣れで、理解していることを確認しようとしています。次の例を検討してください:-

トランザクションには、select ステートメントと update ステートメントが含まれています。ここで、update ステートメントは、select ステートメントから返された結果セットに依存します。ユーザー A と B が同時にトランザクションを実行し、両方のユーザーがデータを選択し、Update を実行しようとしています。ユーザー A が最初に更新を実行すると、ユーザー B にバグが発生する可能性があります。最新の結果セットがないためです。これはファントム リード ケースと呼ばれます。

serializable 分離​​レベルの場合: 上記のケースは発生しません。トランザクションは完全に分離されており、同時に動作することはできません。ユーザー B のトランザクションは、ユーザー A がトランザクションを完了するまで select ステートメントを実行できません。ユーザー B は、トランザクション A が完了するまで待ちます。

Repeatable read 分離レベルの場合: トランザクション B はデータを読み取ることはできますが、データを変更することはできません。これにより、ファントム読み取りが発生する可能性があります。

これが正しい理解かどうか言えますか?