【MySQL】 ALTER TABLE
MyISAMやInnoDBに対してALTER TABLEを実行すると、以下のような動作をします。
- テーブルをTL_WRITE_ALLOW_READロックする。(実行中対象テーブルは読み取り可、書き込み不可の状態)
- 新しいテーブル定義を使って空のテンポラリテーブルを作成する。
- 古いテーブルから新しいテーブルへデータをコピーする。
- テーブルの名前を付け替えて、新しいテーブルを古いテーブルと同じ名前にする。
- 古いテーブルを破棄する。
- 新しいテーブルへブロックしていたWRITEをリダイレクトする。
テンポラリに全テータのコピーをするので、1つのテーブルに2つ以上の変更を加える場合は、ALTER文をひとまとめにした方が早く完了します。
コメント