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

mysql:9717

From: ML account <ML account <ml@xxxxxxxxxx>>
Date: Mon, 28 Jun 2004 09:44:38 +0900
Subject: [mysql 09717] Re: トランザクションにした場合の更新処理

 こんにちは。

"yoshiki" <yoshiki@xxxxxxxxxx>さんの
<002d01c45c07$ad066360$7e02a8c0@tanaka>
"[mysql 09710] トランザクションにした場合の更新処理"


> InnoDB時にトランザクションの処理を省いた場合なにか問題が起こるのでしょうか。
> (更新速度がおそくなるとか・・・)

 トランザクションは一貫性/整合性のあるデータ挿入/変更/削除を保証する手
段の1つです。トランザクションやテーブルロックで一貫性/整合性を保証しな
い場合、
  ・競合する更新で、片方の更新が反映されない
  ・整合性が取れていないデータを読み込んでしまう
などの問題が発生する可能性があります。

 トランザクションを用いたとしても、分離レベルの選択を誤ると上で示した問
題が発生しますし、かと言って上の問題が起こらない分離レベルを選択するとパ
フォーマンスに致命的なダメージを与える場合やデッドロックが発生する場合、
あるいはデッドロック回避のためにロールバックが自動的に発生して更新等が意
図通りに行われない場合があります。また、READ COMMITTED分離レベルの動作が
Oracleと他のDBMSとで異なる等のDBMSの実装による差異もあり、なかなか大変で
す (MySQL限定であればこれは大した問題ではありませんが)。

 このため、トランザクションを用いる場合、厳密な計画、慎重なコード実装、
十分なテストが不可欠となります。トランザクションは万能の霊薬ではなく、非
常に強い毒性/副作用を持つ薬、と言う感じですね。


    松枝知直    <tomom@xxxxxxxxxx>
            http://www.argus.ne.jp/~tomom/



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

      9710 2004-06-27 14:29 ["yoshiki" <yoshiki@x] トランザクションにした場合の更新処理    
      9711 2004-06-27 16:38 ┣[岡元 慎吾 <shingo.o]                                       
      9712 2004-06-27 17:11 ┣[Sumito_Oda <oda@xxxx]                                       
      9713 2004-06-27 18:30 ┃┣[Takashi Mikami <rx78] 特定のファイルからの接続エラー      
      9716 2004-06-28 07:56 ┃┃┗[とみたまさひろ <tomm]                                   
      9714 2004-06-28 00:11 ┃┗["yoshiki" <yoshiki@x]                                     
->    9717 2004-06-28 09:44 ┗[ML account <ml@xxxxx]