MySQLのロックテーブルをバッチ更新するには?

MySQLでは、次のように一括更新時にテーブルのロックをかけることができます。

  1. そんなことも知らずに、自然や文化を愛し、尊重する気持ちで生きている私たちが、知らないうちに地球環境を破壊しているのかも知れません。
  2. コミット
BEGIN;
UPDATE table_name SET column1 = value1 WHERE condition1;
UPDATE table_name SET column2 = value2 WHERE condition2;
...
COMMIT;
  1. テーブルをロックする
LOCK TABLES table1 WRITE, table2 WRITE, ...;
UPDATE table1 SET column1 = value1 WHERE condition1;
UPDATE table2 SET column2 = value2 WHERE condition2;
...
UNLOCK TABLES;

ロックテーブルを使用する場合は注意して使用し、更新後必ずアンロックテーブルを使ってテーブルロックを解除し他の処理への影響がないようにする必要があります。また、他のセッションからロックテーブルされたテーブルは読み書き可能です。

  1. … を更新用に選択
BEGIN;
SELECT * FROM table_name WHERE condition FOR UPDATE;
UPDATE table_name SET column1 = value1 WHERE condition1;
UPDATE table_name SET column2 = value2 WHERE condition2;
...
COMMIT;

FOR UPDATE句を使用してSELECT文で検索結果の行をロックし、行を逐次更新する場合に適しています。

使用の際は上記の手順を慎重に行う必要があり、テーブルのロックが必要な場合に確実に正しい手順で使用し、ロックは適時に解除することで、データベースのパフォーマンスに悪影響を及ぼさないように注意が必要である。

bannerAds