先日、厄介な MySQL 問題が発生しました。PHPMyAdmin インターフェイスを使用して、テーブル「Promotions」に 2 つの新しい列を追加しました (既存の列は 13 個、レコード数は約 750 個)。このクエリ (「ALTER TABLE.....」) は完全に実行されず、テーブルがロックされたため、「Promotions」への後続のクエリはハングしてキューに入れられました。この問題が起こっていることに気付くまでに約 1 時間かかりましたが、データベースを再起動することで問題は解決しました。
取るべき標準的な予防措置や、データベース スキーマの変更によって発生する既知の問題はありますか? このようなロックが発生するのはこれまで見たことがありません。
答え1
特に実稼働環境で、mysql テーブルをよりスムーズに変更するには、次のシナリオを検討してください。
1. CREATE tmp_table LIKE original_table
2. ALTER tmp_table..
3. INSERT INTO tmp_table SELECT * FROM original_table
4. RENAME original_table to orginal_table_old
5. RENAME tmp_table to original_table
6. DROP original_table_old
また、興味があるかもしれませんフラッシュテーブルそしてテーブルのロックを解除ドキュメントについて。
編集: この問題を解決する代替解決策は、pt-オンライン スキーマ変更Percona によるツール。