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]