mysql:10013
From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Fri, 13 Aug 2004 20:07:48 +0900
Subject: [mysql 10013] Re: データのロックについて
こんにちは。 kuyo@xxxxxxxxxxさんの <m3acx1gj1l.wl@xxxxxxxxxx> "[mysql 10009] Re: データのロックについて" > 松枝さんはこれ以上スレッドを伸ばすおつもりが無いようですが、 > ネタを振られたのでもう少しおつき合い願えますか。 「もう少しおつき合い願えますか」それは結構ですけど、疲労感を与えない様 にお願いします。ずっと前の日本語フィールド名のスレッドでも分かると思いま すが、ラチも無い(とボクが思う)話が続くと、ブチっと切れる可能性があります。 実際、既に切れかかっていますけどね。 > 「どのような実装があるか」という私の問いに対して教えて頂いた MSDE で検 > 証を行っていますが、私の予想とは異なる挙動になっています。 「私の予想とは異なる挙動」とは、山本さんが正しいと信じ込んでいたのとは 異なる挙動となっている、ですね? [mysql 09988]で「InnoDB の挙動は SQL92の REPEATABLE READ の通りに動作 していると私は思いました」等と仰っているのですから、「私の予想とは異なる 挙動」等と持って回った言い方ではなく、 MSDEの挙動は絶対におかしい!ぜーーーってーーー変!変、変、変! とか言ってみるのが、男気があって非常に宜しいかと。 > 松枝さんが望む挙動は、「端末1 で commit された結果が時系列で直後の端末 > 2 の select の結果に反映する」と理解しました。(上記の私の予想がこの動 > 作です) > InnoDB では、「端末2 で commit しなければ端末2 の select に反映されず、 > 挙動が正しくない」と理解しました。 不正確な理解だと思いますよ。 (A) non-transactonal read-op selectの結果が現状のDBの状況を正しく反映 している (B) transactonal read-op selectの全てで同一の結果が得られる ついでに、REPEATABLE READ分離レベルのキツさを考えれば、 (B-1) read-op selectを行うトランザクションの外部で、select結果に影響を与 える操作は制限される(遅延等)。 (B-2) transactonal read-op selectで得られる結果と実際のDBの内容に一貫性 がある(read-op selectで得られた結果が実際のDBの内容と似ても似つか ないインチキ結果ではない)。 も考えるべきでしょう。 > また InnoDB と MSDE の挙動も異なりました。 > (MSDEでの私の検証結果の詳細はさしあたって伏せておきます) 「異なりました」で済ませようとするのは如何なものでしょうね。何が理由で 実験結果を晒せないのですか? > term1 :: set implicit_transactions on implicit_transactionsをonにした理由は何ですか?トランザクション/非トラ ンザクションや REPEATABL READ分離レベルの動きを確認する場合に、そういう 夾雑物を突っ込んだ結果は元より、その思考や過程も信用なり確信なり出来るも のですか? −−− ボクが期待する所のMSDEの挙動とはこんなものです。デッドロックでどっちが 転けるか分からない、これは常々問題だろうとは思っていますが、ここでは関係 無い事です。 ※ 準備、端末1 ---------------------------------------------------------------- use test set transaction isolation level repeatable read delete from bbb insert into bbb values(1) go ※ 準備、端末2 ---------------------------------------------------------------- use test set transaction isolation level repeatable read go ※端末1:non-transactional read-op select、端末2:update read-op selectで直近の変更が反映されている。 端末1 |端末2 --------------------------------+-------------------------------- select * from bbb | go | (select結果表示、ID=1) | |begin tran |update bbb set ID=2 where ID=1 |go select * from bbb | go | (停止) | |commit |go (select結果表示、ID=2) | (プロンプト戻る) | select * from bbb | (select結果表示、ID=2) | ※端末1:transactional read-op select、端末2:update read-op selectで外部の更新が遅延させられる。 端末1 |端末2 --------------------------------+-------------------------------- update bbb set ID=1 | go | begin tran | go | |begin tran |go select * from bbb | go | (select結果表示、ID=1) | |update bbb set ID=2 where ID=1 |go |(停止) select * from bbb | go | (select結果表示、ID=1) | select * from bbb | go | (select結果表示、ID=1) | commit | go | |(プロンプト戻る) select * from bbb | go | (停止) | |commit |go (select結果表示、ID=2) | (プロンプト戻る) | ※端末1:transactional read-op select、端末2:update 外部の非コミッテッドデータの存在により、read-op selectが遅延させられる。 端末1 |端末2 --------------------------------+-------------------------------- update bbb set ID=1 | go | begin tran | go | |begin tran |go |update bbb set ID=2 where ID=1 |go select * from bbb | go | (停止) | |commit |go (select結果表示、ID=2) | (プロンプト戻る) | select * from bbb | go | (select結果表示、ID=2) | commit | go | ※端末1/2:transactional read-op select+update read-op selectによるupdateの遅延、デッドロックを起こすupdateの発行によ る片方のトランザクションの終了(rollback) 端末1 |端末2 --------------------------------+------------------------------- update bbb set ID=1 | go | begin tran | go | |begin tran |go select * from bbb | go | (select結果表示、ID=1) | |select * from bbb |go |(select結果表示、ID=1) update bbb set ID=11 where ID=1 | go | (停止) | |update bbb set ID=22 where ID=1 |go |(停止) (デッドロックによるアボート) |(1件処理) <<<<<<上アボート/1件処理は逆の場合あり>>>>>> (プロンプト戻る) |(プロンプト戻る) select * from bbb | go | (停止) | |select * from bbb |go |(select結果表示、ID=22) |commit |go | (select結果表示、ID=22) | (プロンプト戻る) | commit | go | (エラー、BEGIN TRANSACTION無し) | 松枝知直 <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]