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

mysql:6701

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Thu, 12 Dec 2002 07:10:03 +0900
Subject: [mysql 06701] Re: 排他処理

とみたです。

On Tue, 10 Dec 2002 02:33:34 +0900
"E-Mail" <tyunn@xxxxxxxxxx> wrote:

> MyISAM型のテーブルに対して、更新処理(update,delete、insert)を
> 行っている間他のユーザが同テーブルを参照のみできるようにする
> といったことを行うことはできるでしょうか?

単一の更新処理であれば、特にロックする必要はないでしょうから、やりたい
ことは、「複数の更新処理を行なう間、他のスレッドから更新処理をさせたく
ない」ということでしょうか。

WRITE LOCK は、他のスレッドからの検索処理もできなくなっちゃうから、ダ
メですよね。

> //----------------------------------------------------
> 同じテーブルで多くの INSERT と多くの SELECT を行う場合、これを解決するには、
> 他のテーブルに行を挿入して、たまに、その一時テーブルから全てのレコードをもう
> 一方のテーブルに update します。
> これは次のコードで行えます:
> 
> mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
> mysql> insert into real_table select * from insert_table;
> mysql> TRUNCATE TABLE insert_table;
> mysql> UNLOCK TABLES;
> ------------------------------------------------------------//これは、
> http://www.mysql.gr.jp/ 5.3.1からの引用ですがこのような処理が必要になるので
> しょうか?よろしくお願いいたします。

更新処理が INSERT だけであれば、これでも良いかもしれないですね。DELETE 
や UPDATE がある場合は、

	SELECT GET_LOCK("lock", 10000);
	CREATE TEMPORARY TABLE insert_table SELECT * FROM real_table;
	...更新処理...
	RENAME TABLE real_table TO backup_table, insert_table TO real_table;
	DROP TABLE insert_table;
	SELECT_RELEASE_LOCK("lock");

というのはどうでしょうか。試してませんが… (^^;

更新用にテーブルを1個作ってるので、素直に WRITE LOCK した方が速かった
りするかも…。

-- 
とみたまさひろ <tommy@xxxxxxxxxx>
日本MySQLユーザ会 http://www.mysql.gr.jp

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

      6678 2002-12-10 02:33 ["E-Mail" <tyunn@xxxx] 排他処理                                
      6679 2002-12-10 03:11 ┣[Sumito_Oda <oda@xxxx]                                       
      6680 2002-12-10 10:52 ┃┗["E-Mail" <tyunn@xxxx]                                     
      6681 2002-12-10 11:35 ┃ ┗[SUGAWARA Hajime <sug]                                   
      6682 2002-12-10 12:01 ┃  ┗["E-Mail" <tyunn@xxxx]                                 
      6683 2002-12-10 13:15 ┃   ┗[SUGAWARA Hajime <sug]                               
      6692 2002-12-11 09:06 ┃    ┗["E-Mail" <tyunn@xxxx]                             
      6694 2002-12-11 12:03 ┃     ┗[SUGAWARA Hajime <sug]                           
->    6701 2002-12-12 07:10 ┗[とみたまさひろ <tomm]                                       
      6715 2002-12-14 11:59  ┗["E-Mail" <tyunn@xxxx] Re: : 排他処理