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

mysql:15828

From: Tomohiro 'Tomo-p' KATO <Tomohiro 'Tomo-p' KATO <tomop@xxxxxxxxxx>>
Date: Tue, 28 Aug 2012 01:37:57 +0900
Subject: [mysql 15828] Re: mysqlコマンドで最新のデータを参照したい

 こんばんは。かとうです。

On 12/08/28 0:31, ひろ wrote:
> 実は「もしかして」と思い、例2のパターンと同じようにcommitを試してみたのですが、
> 再ログインするまで最新の結果は取れませんでした。
> そうかと思うと、何もしなくても例1のC3で最新のデータが取れる時もありました。
> それで途方に暮れてしまった次第です。

  一応実験してみました。同内容で何度かやってみましたが、select文に
 "LOCK IN SHARE MODE"や"FOR UPDATE" をつけてロックを獲得した場合には、
 commitせずとも更新後の内容を取得していますが、ロックを獲得しない単
 純なselect文の場合には更新前の内容しか出てきませんでした。


実験環境: VineSeed + MySQL-5.5.25

*実験1: 単純なselect文
-----------------------------------------------------------------
mysql> select * from test;
+----+------+
| id | val  |
+----+------+
|  1 |  100 |
+----+------+
1 row in set (0.00 sec)


   (※) ここで別端末から更新


mysql> select * from test;
+----+------+
| id | val  |
+----+------+
|  1 |  100 |       <--------------------- 変化なし
+----+------+
1 row in set (0.00 sec)

mysql> select * from test;  <------------- 念のため再度実行
+----+------+
| id | val  |
+----+------+
|  1 |  100 |       <--------------------- 変化なし
+----+------+
1 row in set (0.01 sec)

mysql> commit;      <--------------------- commitしてみる
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;
+----+------+
| id | val  |
+----+------+
|  1 |  200 |       <--------------------- 変化あり
+----+------+
1 row in set (0.00 sec)
-----------------------------------------------------------------


*実験2: ロックありselect文を使ってみる
-----------------------------------------------------------------
mysql> select * from test;
+----+------+
| id | val  |
+----+------+
|  1 |  200 |
+----+------+
1 row in set (0.00 sec)


   (※) ここで別端末から更新


mysql> select * from test;
+----+------+
| id | val  |
+----+------+
|  1 |  200 |       <--------------------- 変化なし
+----+------+
1 row in set (0.00 sec)

mysql> select * from test for update;  <-- ロックありでselectしてみる
+----+------+
| id | val  |
+----+------+
|  1 |  300 |       <--------------------- 変化あり
+----+------+
1 row in set (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)
-----------------------------------------------------------------


  ちょっと古いですが、以下のサイトにトランザクション分離レベルごとの
 MySQLの挙動の説明がありましたのでご覧ください。

http://www.y2sunlight.com/ground/?MySQL4.1%2F9.MySQL%A4%CE%BC%C2%B8%B3%2F4.%A5%C8%A5%E9%A5%F3%A5%B6%A5%AF%A5%B7%A5%E7%A5%F3
-- 
    __________________________________________________
  _/_/  Tomohiro "Tomo-p" KATO  <tomop@xxxxxxxxxx>
 _/_/  Team Gedoh Network  http://www.teamgedoh.net/
_/_/  Key fingerprint = A6D8 3981 3575 9F00 EFC3  9C2B F03A 5383 9287 74D9

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

   @ 15820 2012-08-27 11:52 [ひろ <hiro@xxxxxxxxx] mysqlコマンドで最新のデータを参照したい 
     15822 2012-08-27 18:31 ┗[yoku ts <yoku0825@xx]                                       
   @ 15823 2012-08-27 19:39  ┗[ひろ <hiro@xxxxxxxxx]                                     
     15824 2012-08-27 20:20   ┣[Tomohiro 'Tomo-p' KA]                                   
   @ 15825 2012-08-27 20:28   ┃┗[ひろ <hiro@xxxxxxxxx]                                 
     15826 2012-08-27 20:49   ┃ ┗[Tomohiro 'Tomo-p' KA]                               
   @ 15827 2012-08-28 00:31   ┃  ┗[ひろ <hiro@xxxxxxxxx]                             
->   15828 2012-08-28 01:37   ┃   ┗[Tomohiro 'Tomo-p' KA]                           
   @ 15829 2012-08-28 10:13   ┃    ┗[ひろ <hiro@xxxxxxxxx]                         
   @ 15830 2012-08-28 11:11   ┃     ┗["Mr. Gimmick" <midri]                       
   @ 15831 2012-08-28 11:28   ┃      ┗[ひろ <hiro@xxxxxxxxx]                     
     15832 2012-08-28 21:59   ┗[とみたまさひろ <tomm]                                   
   @ 15833 2012-08-29 10:59    ┗[ひろ <hiro@xxxxxxxxx]                                 
     15835 2012-08-30 09:54     ┗[yoku ts <yoku0825@xx]                               
   @ 15836 2012-08-30 11:14      ┗[ひろ <hiro@xxxxxxxxx]