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]