はじめに
以前、pt-osc と同様のシナリオで、2 つのテーブル名を確実に交換する必要があるという問題に遭遇しました。
分析
テーブル名をお互いに変更するだけで簡単ではないのではないかと思う人もいるかもしれません。
ただし、テーブル名の交換を同時に完了したいのですが、テーブル名が次々に交換されると、一部のデータの書き込みが失敗する可能性があります。
解決しました
実際、これは MySQL マニュアルにある方法で見つけることができます。つまり、 2 つのテーブルを同時にロックし、書き込みを許可しないで、テーブル名を交換します。
通常は 1 つのテーブルのみをロックしますが、2 つのテーブルを同時にロックするにはどうすればよいですか? 次の方法を使用できます:リーリー
実際には、テーブルレベルの書き込みロックを両方のテーブルに同時に追加し、ALTER 構文を使用して名前を変更するだけです。