0

私たちは初心者であり、Java ソフトウェアは select * などを使用してデータベースからクエリを取得します。

私の質問は、ロックを強制するために共有モードと「FOR UPDATE」でロックを追加する必要がありますか、それともテーブルと行のロックは自動ですか?

同時実行を強制したいテーブルが 1 つあります。ロックする必要があるテーブルに LOCK TABLE を追加し、値を更新してから、ロックを解除することはできますか?

4

1 に答える 1

2

私のコメントに対するあなたの回答に基づいて、テーブルロックを手動で処理することについて本当に心配する必要はないと思います。InnoDB は行レベルのロックをサポートし、自動コミットを有効にすると (デフォルトで)、すべての個々のクエリは実際にはトランザクション方式で処理されます。

単一のトランザクションとして処理する必要がある複数の SQL クエリがある場合 (つまり、1 つのテーブルを更新してから別のテーブルを更新する - 両方が成功するか、両方がロールバックされる)、具体的にトランザクションを開始してコミットするか、暫定クエリが実行された後にロールバックします。

トランザクション分離レベルを変更する必要がある場合は、ステートメントを使用することもできSET TRANSACTIONます (デフォルトでは「REPEATABLE READ1」です)。

詳細については、MySQL のドキュメントを参照してください。

于 2012-11-28T01:06:24.330 に答える