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

mysql:9975

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Tue, 10 Aug 2004 09:30:00 +0900
Subject: [mysql 09975] Re: データのロックについて

 こんにちは。

"akira" <akrst@xxxxxxxxxx>さんの
<004801c47e24$787ac250$0200a8c0@win2k>
"[mysql 09970] Re: データのロックについて"


> repeatable readは、同一トランザクションにおいて、複数回の
> selectコマンドが発行された場合、選択されたレコードが他の
> トランザクションの影響を受けない「分離性」です。
> 
> なので、松枝知直さんが提示された以下の例では、
> 
>      term1                           | term2
>     ---------------------------------+--------------------
>      set autocommit=0;               |
>                                      | set autocommit=0;
>      select * from BBB;              |
>                                      | select * from BBB;
>      update BBB set ID=2 where ID=1; |
>                                      | select * from BBB;
>      commit;                         |
>                                      | select * from BBB;
>      select * from BBB;              |
> 
> term1でcommitを発行してレコード更新を確定したとしても、
> term2のトランザクションは続いたままなので、repeatable r
> eadの分離性のために、term2の3つのselectコマンドは全て
> 同じ結果になります。
> 
> term2が、term1での更新結果を取り込むには、term2のトラ
> ンザクションを終了させる必要があります。(たとえば、commit
> コマンドなどで)
> とみたまさひろさんが、「..常にイン・トランザクション,,,」といった
> のは、こういう意味じゃないでしょうか。

 接続2(term2)がイン・トランザクションであれば、その通りでしょうね。で
も、akiraさんの論理は少々のmissing linkと言うか、飛躍があるのです。接続
2(term2)がイン・トランザクションである事を、証明不要な事実と仮定(じゃな
くて断定、かな?)していませんか?


 今までの話をまとめてみます。[mysql 09957]に於いて、何故にこの様な事が
起こるのかに付いて、

> ・イン・トランザクションであろうがなかろうが、最初のselectでスナップショッ
>   トが作られ、それからの読み込みが継続される仕様にMySQLはなっている。
>   (REPEATABLE READの説明との齟齬)
> ・実はselectクエリでも暗黙のトランザクション開始をしてしまう仕様にMySQL
>   はなっている。(SQL92との齟齬)

の2つの可能性を示しました。

 他の可能性、「set autocommit=0でトランザクションが開始される」は、、
[mysql 09956]の海老原さん、[mysql 09959]のとみたさんが述べられています。

 結局、

(1) イン・トランザクションであろうがなかろうが、最初のselectでスナップシ
    ョットが作られ、それからの読み込みが継続される仕様にMySQLはなってい
    る。 (REPEATABLE READの説明との齟齬)
    ----->議論無し

(2) 実はselectクエリでも暗黙のトランザクション開始をしてしまう仕様に
    MySQLはなっている。(SQL92との齟齬)
    ----->SQL92との齟齬であるかどうかはひろせさんの回答待ち

(3) set autocommit=0でトランザクションが開始される。
    ----->違うのではないか、が、[mysql 09962]でのボクの意見

が、現在の状況です。

 akiraさんの意見は、系統的には(2)に属しますね。(2)の記事の流れは、

  [mysql 09955](ひろせさん、ACID特性からも妥当な動作である)
    |
  [mysql 09957](松枝、REPEATABLE READ分離レベルは、イン・トランザクシ
         ョンで適用されるべき、ACID特性も同様にイン・トランザク
         ションでの事、selectで暗黙のトランザクションが開始され
         なければ言及は無意味。MySQLはSQL92に沿わず、selectで暗
         黙のトランザクションを開始してしまう可能性の提示。
    |
  [mysql 09960](ひろせさん、selectでトランザクションが開始される、
         SQL92との齟齬は無い)
    |
  [mysql 09962](松枝、全てのselectに付いてトランザクションが開始される
         のかが不明。SQL92との齟齬が無いのかは疑問)

です。現時点では、MySQL/InnoDB/REPEATABLE READの動作はイン・トランザクシ
ョンであればそういう動作になる、と言う点で異論は無く、read-opのselectに
よってイン・トランザクションになるかどうか、なるとすればそれが妥当なのか
どうか、が、争点となっています。

 山本さんの[mysql 09969]は、内容的には[mysql 09957]と同じでしょうか?そ
れに対するakiraさんの[mysql 09970]は、ひろせさんの[mysql 09955]へ戻って
しまったか、あるいは[mysql 09962]まででまだ決着が付いていない「read-opの
selectによってイン・トランザクションになるかどうか」について「なる」を自
明としての話ですよね。



    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



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

      9940 2004-08-04 13:17 ["Mamiya Masataka" <x] データのロックについて                  
      9943 2004-08-05 10:06 ┣["Mamiya Masataka" <x]                                       
      9944 2004-08-05 10:36 ┗[ML account <ml@xxxxx]                                       
      9945 2004-08-05 11:26  ┣[seiji takegata <take]                                     
      9946 2004-08-05 13:30  ┃┣[ML account <ml@xxxxx]                                   
      9949 2004-08-05 15:24  ┃┃┗[EBIHARA Yuichiro <ui]                                 
      9951 2004-08-05 23:09  ┃┃ ┗[ML account <ml@xxxxx]                               
      9952 2004-08-05 23:19  ┃┃  ┣["TAKAHASHI, Tomohiro]                             
      9953 2004-08-06 05:37  ┃┃  ┃┗[ML account <ml@xxxxx]                           
      9954 2004-08-06 05:51  ┃┃  ┃ ┗[ML account <ml@xxxxx]                         
      9955 2004-08-06 11:25  ┃┃  ┃  ┗["HIROSE, Masaaki" <h]                       
      9957 2004-08-06 13:30  ┃┃  ┃   ┗[ML account <ml@xxxxx]                     
      9958 2004-08-06 14:04  ┃┃  ┃    ┣[SUGAWARA Hajime <sug]                   
      9959 2004-08-06 14:17  ┃┃  ┃    ┣[とみたまさひろ <tomm]                   
      9960 2004-08-06 16:50  ┃┃  ┃    ┗["HIROSE, Masaaki" <h]                   
      9962 2004-08-07 16:49  ┃┃  ┃     ┗[ML account <ml@xxxxx]                 
      9969 2004-08-09 18:24  ┃┃  ┃      ┣[<kuyo@xxxxxxxxxx>   ]               
      9970 2004-08-10 00:20  ┃┃  ┃      ┃┗["akira" <akrst@xxxxx]             
->    9975 2004-08-10 09:30  ┃┃  ┃      ┃ ┗[ML account <ml@xxxxx]           
      9976 2004-08-10 10:48  ┃┃  ┃      ┃  ┣["TAKAHASHI, Tomohiro]         
      9997 2004-08-11 13:03  ┃┃  ┃      ┃  ┗[<akrst@xxxxxxxxxx>  ]         
      9983 2004-08-10 18:28  ┃┃  ┃      ┣[とみたまさひろ <tomm]               
      9987 2004-08-10 20:28  ┃┃  ┃      ┃┗[ML account <ml@xxxxx]             
      9988 2004-08-10 21:26  ┃┃  ┃      ┃ ┣[<kuyo@xxxxxxxxxx>   ]           
      9994 2004-08-11 11:38  ┃┃  ┃      ┃ ┃┗[ML account <ml@xxxxx]         
     10004 2004-08-12 01:03  ┃┃  ┃      ┃ ┃ ┗[Tomoyuki Ishino <ish]       
     10006 2004-08-12 08:54  ┃┃  ┃      ┃ ┃  ┗[ML account <ml@xxxxx]     
     10012 2004-08-13 12:52  ┃┃  ┃      ┃ ┃   ┗[Tomoyuki Ishino <ish]   
     10014 2004-08-13 20:08  ┃┃  ┃      ┃ ┃    ┗[ML account <ml@xxxxx] 
      9989 2004-08-10 23:39  ┃┃  ┃      ┃ ┗[とみたまさひろ <tomm]           
      9992 2004-08-11 10:54  ┃┃  ┃      ┃  ┣["Tomo Ikehara" <tomo]         
      9995 2004-08-11 12:08  ┃┃  ┃      ┃  ┃┣["TAKAHASHI, Tomohiro]       
     10001 2004-08-11 16:16  ┃┃  ┃      ┃  ┃┃┣["TAKAHASHI, Tomohiro] Re: データのロックについて(余談:START TRANSACTION)
     10003 2004-08-12 00:51  ┃┃  ┃      ┃  ┃┃┃┗[とみたまさひろ <tomm]   
     10011 2004-08-13 11:06  ┃┃  ┃      ┃  ┃┃┗["Tomo Ikehara" <tomo]     
      9999 2004-08-11 15:40  ┃┃  ┃      ┃  ┃┗[EBIHARA Yuichiro <ui]       
     10017 2004-08-13 22:42  ┃┃  ┃      ┃  ┃ ┗["Tomo Ikehara" <tomo]     
      9993 2004-08-11 11:38  ┃┃  ┃      ┃  ┗[ML account <ml@xxxxx]         
     10000 2004-08-11 15:53  ┃┃  ┃      ┃   ┣[EBIHARA Yuichiro <ui]       
     10008 2004-08-12 10:30  ┃┃  ┃      ┃   ┃┗[ML account <ml@xxxxx]     
     10009 2004-08-12 11:57  ┃┃  ┃      ┃   ┃ ┗[<kuyo@xxxxxxxxxx>   ]   
     10013 2004-08-13 20:07  ┃┃  ┃      ┃   ┃  ┗[ML account <ml@xxxxx] 
     10016 2004-08-13 22:02  ┃┃  ┃      ┃   ┃   ┣[とみたまさひろ <tomm]   
     10018 2004-08-14 19:58  ┃┃  ┃      ┃   ┃   ┗[<kuyo@xxxxxxxxxx>   ]   
     10005 2004-08-12 01:32  ┃┃  ┃      ┃   ┗[とみたまさひろ <tomm]       
     10010 2004-08-13 01:25  ┃┃  ┃      ┗["HIROSE, Masaaki" <h]               
      9956 2004-08-06 11:44  ┃┃  ┗[EBIHARA Yuichiro <ui]                             
      9974 2004-08-10 09:30  ┃┃   ┗[ML account <ml@xxxxx]                           
      9982 2004-08-10 16:41  ┃┃    ┗[EBIHARA Yuichiro <ui]                         
      9986 2004-08-10 20:25  ┃┃     ┗[ML account <ml@xxxxx]                       
      9950 2004-08-05 16:20  ┃┗[HAMAI Kyoichi <k-ham]                                   
      9947 2004-08-05 13:35  ┗["Mamiya Masataka" <x]                                     
      9948 2004-08-05 15:03   ┗[ML account <ml@xxxxx]