pt-online-schema-change を使用して大きなテーブル (最大 1 億レコード) のスキーマを変更したいのですが、このツールは実行中に MySql のパフォーマンスに影響しますか?
3 に答える
3
設計上、ツールがパフォーマンスに大きな影響を与えることはありません。まず、ツールの機能を確認しましょう。
- トリガーを現在のテーブルにアタッチして、すべての更新、削除、および挿入を新しいテーブルにコピーします。
- キーで分割されたチャンクで既存のデータをコピーします
最初の部分では、すべての書き込みが 2 倍になり、これを回避する方法はありません。2 番目の部分は、現在のテーブルをロックし、大量の IO を使用する可能性があるバッチ操作です。
幸いなことに、2 番目の部分はチャンクに分割されておりpt-online-schema-change
、チャンクの大きさとチャンク間の待機時間について非常に巧妙です。
- チャンク間のスレーブ レプリケーションをチェックし、ラグが大きすぎる場合は一時停止します。スレーブを再帰的にチェックできます。
- 負荷(通常は実行中のスレッド数で測定) をチェックし、実行中のクエリが多すぎる場合は一時停止します (ロックの競合または CPU/IO 使用率が高いことを意味します)。負荷が非常に高い場合は、中断することさえあります。
- ロック競合の犠牲になる可能性が最も高いようにInnoDB ロック設定を構成するため、本番クエリはスムーズに実行されます。
- デフォルトでは、以前のチャンク ランタイムの加重平均を使用して、ランタイムの一貫性を保つためにチャンク サイズが動的に変更されます。
- 大きすぎるチャンク(たとえば、同じキーを持つ膨大な数の行が原因) はスキップされます。
このため、サーバーがコピーによってわずかに影響を受けるだけである可能性があります。もちろん、保証はありません。可能であれば、データベースのステージング バージョンでツールを実行する必要があります。問題が発生した場合、データを失うことなくツールを安全に中止できます。
于 2014-05-25T11:37:54.853 に答える
0
ディスクに読み書きし、メモリを消費し、CPU を使用するため、実行中のパフォーマンスに影響します。それ以外の場合はどうですか?
于 2011-12-08T11:42:46.530 に答える