問題タブ [rowlocking]

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 に答える
441 参照

sql - SQL Server UPDATE WITH ROWLOCK が機能していないようです

データベース テーブルから INT を取得し、それを 1 増やしてから古い値を返す必要があるというシナリオがあります。ストアド プロシージャがすぐに再度呼び出された場合、返される値 (NextBookingId) が、ストアド プロシージャの最初の呼び出しによって返される値と同じではないことを確認する必要があります。

私は以下のコードを使用しており、それが機能していると想定していましたが、ストアド プロシージャの 2 つの別個の即時呼び出しが同じ値を返しているように見えるため、今まで適切にテストされておらず、機能していないようです。 .

これはトランザクションにラップする必要がありますか? CompanyId 主キーにクラスター化インデックスがあります。

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

oracle - JdbcTemplate autoCommit モードのバグのようです

私は、DataSource と Spring JdbcTemplate に Oracle Universal Connection Pool を使用しています。FE:

主なアイデア - 更新のために行のロックを取得しました。2 つの異なるプロセスから実行すると、jdbcTemplate.execute メソッドが終了した後 ("UnLocked" テキスト) にロックが解除されず、コードが終了した後 ("Finished." テキスト) にのみロックが解除されます。コードからコメントを削除すると(つまり、autoCommit = falseモードに切り替える)、すべて問題ありません。

これは JdbcTemplate のバグだと思います。または、Oracle 12.1.0.2 ucp ライブラリで... 私は正しいですか?

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

sql-server - SQL SERVERのトランザクションでSELECTステートメントを使用して行をロックすることは可能ですか?

SQL SERVERで、トランザクション内のSELECTステートメントで行をロックすることは可能ですか? 行をロックしたいので、外部からの他のトランザクションはその行に到達できません。

トランザクションがコミットまたはロールバックされた後、行を解放する必要があります。これが私が意味することです...

誰か提案がありますか?行をロックするには、UPDATE ステートメントを実行する必要がありますか?

この質問を重複としてマークしないでください。UPDATEステートメントについて尋ねているのではなく、SELECTについて尋ねているからです

編集:「SET TRANSACTION ISOLATION LEVEL SERIALIZABLE」を試みましたが、ロックが多すぎます。私の SP は巨大で、多くの SELECT ステートメントがあります。「SET TRANSACTION ISOLATION LEVEL SERIALIZABLE」は、SP 内のすべての SELECT からの行をロックします。ただし、1 つのテーブルの行のみをロックしたいと考えています。

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

mysql - MySQL 行ロックとアトミック更新

MySQL を使用して「貧乏人のキューイング システム」を構築しています。これは、実行する必要があるジョブを含む単一のテーブルです (テーブル名は ですqueue)。複数のマシンにいくつかのプロセスがあり、その仕事はfetch_next2sprocを呼び出してキューからアイテムを取得することです。

この手順の要点は、2 つのクライアントに同じ仕事をさせないようにすることです。を使用すると、1 つの行をロックできるので、1 人の呼び出し元によってのみ更新されたことを確認できます ( 「準備完了」のジョブをフィルター処理するために使用されるSELECT .. LIMIT 1 FOR UPDATE基準に適合しなくなるように更新されます)。SELECT処理されます)。

誰が私が間違っているのか教えてもらえますか? 同じジョブが 2 つの異なるプロセスに与えられた例がいくつかあったので、正しく動作しないことがわかっています。:)

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

stored-procedures - ストアド プロシージャでの更新の選択 (同時にフィールドをインクリメント)

複数のユーザーが接続しているときに、Informix 12.1 でフィールドの値を取得して安全にインクリメントしたいと考えています。

私が C 用語で求めているのはlastnumber = counter++;、並行環境です。

ドキュメントには、これを行う1つの方法が記載されています。これは、すべての人を待機パラメーターに接続し、行をロックし、データを読み取り、インクリメントしてロックを解放することです。

だからこれは私が試したものです:

また、セッションをコミットするか終了するまで、行がロックされていることがわかります。

ただし、これをストアド プロシージャに入れると、次のようになります。

データベースで構文エラーが発生します。for update(別のエディターで試してみました) では、ストアド プロシージャ内に句を記述すると構文エラーになるのはなぜですか? これに代わるものはありますか?

編集

これが私が最終的に得たものです:

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

mysql - mysqlの行ロックメカニズムの欠点はありますか?

私はmysqlの初心者ですが、基本はほとんどクリアされていませんが、mysqlのロックシステムについて疑問があります。行ロック メカニズムは mysql の InnoDB エンジンによって提供され、テーブル ロックと比較してテーブル パフォーマンスが向上します。しかし、私の質問は少し異なります。

今、userName = rajの行をロックすると思います

  1. R または r で始まる userName を持つ従業員のデータを取得したい場合、ロックされている行が 1 行少なくなりますか? または、ロックされた行が他のトランザクションのクエリの一部であるため、ロックが保持されますか?
  2. K で始まる userName を検索すると、最初のトランザクションの行ロックが回避され、最初のトランザクションによる更新が失われますか? 私が間違っている場合は修正してください。行ロックの考えを明確にしたいだけです。
0 投票する
3 に答える
1853 参照

sql-server - SQL Server での INSERT、UPDATE、または DELETE 操作のロック モードのタイプはどれですか?

NOLOCK が SELECT 操作のデフォルトであることは知っています。with (NOLOCK)そのため、選択クエリのキーワードを記述しなくても、行はロックされません。

with (ROWLOCK)UPDATE および DELETE クエリに が指定されていない場合にどうなるかわかりませんでした。以下のクエリに違いはありますか?