2012-02-20 11 views
3

したがって、本番データベースのいくつかのテーブルのエンジンをMyISAMからInnoDBに変更するように求められました。私はそれが生産における使用にどのように影響するかを理解しようとしています(サーバーはダウンタイムを与えられないため)。テーブルロックがMyISAMからInnoDBへのテーブルエンジンの変更にどのように影響しますか?

私はいくつかの矛盾する情報を読みました。私が読んだ情報の中には、テーブルがロックされており、変換が完了するまで更新が受信されないことが示されています(IE、更新はキューに入れられず、完了するまで破棄されます)。

他の場所では、テーブルがロックされている間、操作が完了するまで挿入と更新がキューに入れられ、次に書き込み操作が実行されるまで読んでいます。

ここの話は正確には何ですか?

+0

私はあまりあいまいでないように質問を編集しました。 – dmarra

答えて

2

これはmanualから直接である:多くの場合

、ALTER TABLEは元 テーブルの一時的なコピーを作成します。 MySQLはテーブルを変更している他の操作を待ってから、 を実行します。コピーに変更を組み込み、元のテーブル を削除し、新しいテーブルの名前を変更します。 ALTER TABLEは の実行中ですが、元のテーブルは他のセッションで読み込み可能です。更新 を実行し、ALTER TABLE操作の開始後に開始するテーブルへの書き込み は、新しいテーブルが準備完了するまで停止し、更新されずに新しいテーブルに自動的にリダイレクトされます。

だから、2番勝ちです。彼らは "失敗"していない、彼らは "失速している"。

0

後者は正しいです。変更されている表に対するすべての照会は、変更が完了するまでブロックされ、変更が完了すると処理されます。これには、読み取り照会(SELECT)と書き込み照会(INSERT、UPDATE、DELETE)が含まれます。

関連する問題