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

mysql:10010

From: "HIROSE, Masaaki" <"HIROSE, Masaaki" <hirose31@xxxxxxxxxx>>
Date: Fri, 13 Aug 2004 01:25:55 +0900
Subject: [mysql 10010] Re: データのロックについて

ひろせです

# 随分、間が空いちゃいましたが。

on "[mysql 09962] Re: データのロックについて"
   <20040807074900.431891AA02E@xxxxxxxxxx>
at Sat, 07 Aug 2004 16:49:00 +0900
   ML account <ml@xxxxxxxxxx> wrote:

(snip)
>  で、今焦点となっているのはselectの中でも単純なread-opのselectですね。
> よって、
> > 手元の書籍*1 によれば、SELECT 文でも暗黙的にトランザクションは開始され
> > るようです
> を参考にしろと言う事は、
> 
>         select for updateのみならず、今回焦点となっている read-opのみの
>         selectを含め、全ての selectでトランザクションが開始される。
>         それがSQL92の規格。
> 
> がひろせさんの主張ですね。
> 
>  もしも、その2つの本の記述の意が「selectでトランザクションが開始される
> 場合がある」程度のものであれば、それは全く正しいながら(select for
> updateがありますからね)、このコンテキストでは残念ながら全く参考になりま
> せんし、逆に話をただただ混乱させる結果に終わってしまいますよね。
> 
>  で、その本にはどう書いてあります?
(snip)

両書ともトランザクションの開始に関する文章で出てくる言葉は、(私が読んだ
限りでは)『SELECT』もしくは『SELECT文』だけです。(1)

また、
『SQL92完全ガイド』には付録に SQL92 の BNF があるのですが、SELECT 文に
は FOR UPDATE という句は出てきません。(2)
# FOR UPDATE を含む定義はあるのですが、これはカーソルの定義でしか使われ
# ていません。
## 紙の上で BNF を追っ掛けたので、私が見逃している可能性は否定しません
## が、<query expression> を起点として数回見直しました。
『SQLクイックリファレンス』の SELECT の節では、『SQL99の構文と機能説明』
としては FOR UPDATE 句は現れず、Oracle と PostgreSQL の拡張として FOR
UPDATE 句が取り上げられています。(3)
# この本が対象としている MySQL が 3.22.9 のせいか、MySQL の拡張には
# FOR UPDATE 句は触れられていません。

更に、
『SQLクイックリファレンス』の START TRANSACTION の節では、『SQL99 で新
しく追加された START TRANSACTION 文は、』と書かれているので、SQL92 で
は明示的にトランザクションを開始する START TRANSACTION 文はなかったこ
とがうかがえます。(4)
# START じゃなくて BEGIN TRANSACTION は SQL92, 99 の規格にはないようで
# す。

それと、私が読んだ限りでは『自動コミット』『AUTOCOMMIT』という言葉は、
両書ともに SQL92 (もしくはSQL99) を説明する文脈には表れていませんでした。
(5)

                                  //

「FOR UPDATE 句を伴わない SELECT 文でもトランザクションが開始されるの
かどうか」という問題は、きちんとした規格書がある以上、『と思う』とか
『と聞いたことがある』といった主観的、不確実な根拠を元にして話を進めて
もあまり意味がないのではないかと思います。

先に挙げたことも、解説本を私が読み取った結果ですので、正しいかどうかと
いうのはお約束できません。
# もちろん、ウソのないように書いたつもりではあります。

従って、トランザクションの開始と SELECT 文について (1) と ((2)+(3)) を
根拠として得られる結論、また、SQL92 におけるトランザクションの開始につ
いて (4) と (5) から得られる結論については、規格書を読んでいない私の意
見は敢えて控えさせてもらいます。
# 自明なような気もしますが ;p)

規格書 (ISO/IEC 9075:1992 か ANSI X.3.135-1992) を持っている人がいたら
是非情報をいただきたいです。

ではでは

-- 
ひろせ
http://www.irori.org/

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

      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]