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

mysql:8469

From: "HIROSE, Masaaki" <"HIROSE, Masaaki" <hirose31@xxxxxxxxxx>>
Date: Wed, 10 Dec 2003 19:08:27 +0900
Subject: [mysql 08469] Re: innoDB の行排他ロックについて

ひろせといいます

on "[mysql 08467] Re: innoDB の行排他ロックについて"
   <20031210182858.3dd29611.tommy@xxxxxxxxxx>
at Wed, 10 Dec 2003 18:28:58 +0900
   とみたまさひろ <tommy@xxxxxxxxxx> wrote:

> > MySQLで大量データを持つ表に対しある処理で一部レコードを更新
> > しながら別の処理で他のレコードを更新することが実現可能か
> > どうかの調査を行っており、Oracleでの開発を行った経験から
> > 双方の処理で行の排他ロックを掛ける必要があると思っています。
> > 
> > しかし、以下の図の様に選択した行以外の行排他ロックを行おう
> > としてもロック待ちが発生してしまいます。
> > テーブルロックがかかっているかの様です。
> 
> テーブルはどのようにして作成したのでしょうか。
> 
> 手元の環境(Linux + MySQL 4.0.15)では、次のように作成したテーブルで期待
> 通りに動きました。
> 
> create table a (keyno int, dat1 int, dat2 int, unique (keyno)) type=innodb;

RHL7.3 に MySQL AB 提供の rpm をインストールした

mysql> select version();
+---------------------+
| version()           |
+---------------------+
| 4.0.16-standard-log |
+---------------------+

なマシンで

mysql> show create table a\G
*************************** 1. row ***************************
       Table: a
Create Table: CREATE TABLE `a` (
  `keyno` int(11) default NULL,
  `dat1` int(11) default NULL,
  `dat2` int(11) default NULL
) TYPE=InnoDB

なテーブルで試してみましたが、私もとみたさんと同様、期待通りに動きまし
た。

                                  //

レコード数が多かろうが少なかろうが、

> > MySQLで大量データを持つ表に対しある処理で一部レコードを更新
                                             ^^^^^^^^^^^^
> > しながら別の処理で他のレコードを更新することが実現可能か
                      ^^^^^^^^^^^^

処理 1 と処理 2 の更新対象レコードが独立ならば、更新処理同士の競合回避
という点で SELECT 〜 FOR UPDATE は必要ないし、恐らくトランザクション処
理も必要ないのではないかと思うのですが、実際の処理内容はもっと複雑なの
でしょうか?

それと

> > どうかの調査を行っており、Oracleでの開発を行った経験から
> > 双方の処理で行の排他ロックを掛ける必要があると思っています。

Oracle でどいう問題があったのかも気になります。

ではでは

-- 
ひろせ

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

      8466 2003-12-10 14:40 ["江口" <eguchi@xxxxx] innoDB の行排他ロックについて           
      8467 2003-12-10 18:28 ┗[とみたまさひろ <tomm]                                       
      8468 2003-12-10 18:58  ┣["江口" <eguchi@xxxxx]                                     
      8471 2003-12-10 19:10  ┃┗["江口" <eguchi@xxxxx]                                   
->    8469 2003-12-10 19:08  ┗["HIROSE, Masaaki" <h]                                     
      8472 2003-12-10 19:22   ┣["HIROSE, Masaaki" <h]                                   
      8483 2003-12-11 15:28   ┗["江口" <eguchi@xxxxx]