[前][次][番号順一覧][スレッド一覧]

mysql:4436

From: Takeharu Masuda <Takeharu Masuda <tac@xxxxxxxxxx>>
Date: Fri, 05 Oct 2001 17:45:28 +0900
Subject: [mysql 04436] テーブルの差し替えとロック

 定期的にバッチで内容を更新する、サマリーテーブル tbl_A があります。
 更新のロジックの関係で、データを全部破棄して作り直す必要があります。
 テーブル再構築中に使えないと困るため、次のようなロジックを考えています。

1. tbl_A と同一構造を持つ tbl_B を作成
2. tbl_B に、最新のデータでサマリーを作成
3. tbl_A を削除( drop table tbl_A)
4. tbl_B を tbl_A にリネーム( rename table tbl_B to tbl_A )

 3. および 4. を実行している最中に、他からのアクセスを禁止するため、テー
ブルをロックしたいのです。

 この場合、 LOCK TABLES 〜 UNLOCK TABLES は使用可能でしょうか?

 仮に LOCK TABLES tbl_A WRITE としても、ロック処理中にそのテーブルその
ものが消えるので、ここでロックが解除されることになってしまうような気がし
ます。直後に rename table するとしても、その瞬間だけはアクセスが可能になっ
て、クライアントに「テーブルがない」と判断されてしまいます。
 まあ、クライアント側でエラーチェックして、テーブルがない(=SQL エラー
になる)ときにはちょっと待って再実行すればいいことではあるのですが。

-- 
written by Takeharu Masuda <tac@xxxxxxxxxx>
with Thinkpad 235 - called "Chandra II" / "Clavius"
at 2001/10/05 17:34:12


[前][次][番号順一覧][スレッド一覧]

->    4436 2001-10-05 17:45 [Takeharu Masuda <tac] テーブルの差し替えとロック              
      4440 2001-10-05 19:54 ┗[YONEMOTO Kazumasa <y]                                       
      4445 2001-10-06 00:48  ┗[Takeharu Masuda <tac]