実行時間の長い変更クエリを強制終了するとどうなりますか?変更クエリは単に元に戻りますか?それにはどれくらい時間がかかりますか(すでに実行されている時間の割合として)?
そのクエリが別のサーバーに複製されている場合はどうなりますか?他のサーバーでプロセスを強制終了すると、元のサーバーの変更クエリが元に戻りますか?
Mysqlを実行しています
それはあなたがしていることに依存します。 InnoDB
テーブルでan alter table...add index
コマンドを実行している場合(MyISAM
についてはよくわかりません)、darnテーブルのロックストック全体をコピーするときに実行されます。 -and-barrel first:「copyto temp table」の途中にある場合、それはほとんど止められません。
ほとんどの場合、ALTER TABLEは、元のテーブルの一時的なコピーを作成することによって機能します。コピーに対して変更が実行された後、元のテーブルが削除され、新しいテーブルの名前が変更されます。 ALTER TABLEの実行中、元のテーブルは他のセッションで読み取ることができます。テーブルへの更新と書き込みは、新しいテーブルの準備ができるまで停止され、その後、更新が失敗することなく、新しいテーブルに自動的にリダイレクトされます。
そのクエリが別のサーバーに複製されている場合はどうなりますか?
ALTERはそのサーバーでも実行され、関連する影響があります。
他のサーバーでプロセスを強制終了すると、元のサーバーの変更クエリが元に戻りますか?
いいえ。元のサーバーには、スレーブで何が発生したか(または発生しなかったか)を知るためのバックチャネルがありません。スレーブでALTERを強制終了すると、マスターに新しい制約またはインデックスがあり、スレーブにはない状況になります。これが幸せのレシピになることはめったにありません:)
ALTERがレプリケーションログに入ると、どこでも実行できるようにするか、どこでも強制終了する必要があります。