2012.
04.
23
13:04:59
「MySQL、オートコミット関連」で前振りしましたが、
要はロールバックができなかったのです。
ちゃんと「set autocommit=0;」してんのになんでだぁ!?と思ったら
テーブルのストレージエンジンがMyISAMでした。ごふっ。
InnoDBにしとけよぉ(つд`)
と言うのが今回のきっかけ。
ほんでMyISAMとInnoDBの違いですが・・色々あります。
すっごい大雑把に言うとこんな感じφ(--)
◆MyISAM
・明示的にトランザクション管理ができない(常にautocommit=1状態)
・ロックが大雑把(テーブルロック)
・ぶっ壊れたときどーしよーもない
・検索?任せとけ!色々できまっせ!
◆InnoDB
・明示的にトランザクション管理ができる
・ロックがきめ細やか(行ロック)
・ぶっ壊れたとき運が良ければ何とかなる
・検索?あぁ、うん、人並みには。
大雑把過ぎて役に立たなかったらごめんなさい。
取りあえず今回私に関係しそうな部分は
InnoDBじゃないとトランザクション管理できねーぞな部分。
明示的にトランザクション管理(commit、rollback)したかったら
テーブルのストレージエンジンをInnoDBにして
「set autocommit=0;」しとけってことですな。
ちなみにテーブルのストレージエンジンをMyISAMからInnoDBへ変換する方法は
「MySQL、MyISAMからInnoDBへの変換」をどーぞです。
要はロールバックができなかったのです。
ちゃんと「set autocommit=0;」してんのになんでだぁ!?と思ったら
テーブルのストレージエンジンがMyISAMでした。ごふっ。
InnoDBにしとけよぉ(つд`)
と言うのが今回のきっかけ。
ほんでMyISAMとInnoDBの違いですが・・色々あります。
すっごい大雑把に言うとこんな感じφ(--)
◆MyISAM
・明示的にトランザクション管理ができない(常にautocommit=1状態)
・ロックが大雑把(テーブルロック)
・ぶっ壊れたときどーしよーもない
・検索?任せとけ!色々できまっせ!
◆InnoDB
・明示的にトランザクション管理ができる
・ロックがきめ細やか(行ロック)
・ぶっ壊れたとき運が良ければ何とかなる
・検索?あぁ、うん、人並みには。
大雑把過ぎて役に立たなかったらごめんなさい。
取りあえず今回私に関係しそうな部分は
InnoDBじゃないとトランザクション管理できねーぞな部分。
明示的にトランザクション管理(commit、rollback)したかったら
テーブルのストレージエンジンをInnoDBにして
「set autocommit=0;」しとけってことですな。
ちなみにテーブルのストレージエンジンをMyISAMからInnoDBへ変換する方法は
「MySQL、MyISAMからInnoDBへの変換」をどーぞです。