近いうちに、本番データベースのスキーマを変更する必要があります。この作業のためにダウンタイムを最小限に抑える必要がありますが、ALTER TABLE ステートメントはかなりの時間実行されます。最大のテーブルには 1 億 5000 万のレコードがあり、最大のテーブル ファイルは 50G です。すべてのテーブルは InnoDB であり、(テーブルごとのファイルではなく) 1 つのビッグ データ ファイルとしてセットアップされました。8 コア マシン、16G メモリ、および RAID10 構成で MySQL 5.0.46 を実行しています。
私は MySQL のチューニングの経験がありますが、これは通常、複数のクライアントからの読み取りまたは書き込みに焦点を当てています。この件に関してインターネット上には多くの情報がありますが、MySQL サーバーを (一時的に) チューニングして InnoDB テーブルの ALTER TABLE や INSERT INTO を高速化するためのベスト プラクティスに関する情報はほとんどないようです。 . SELECT FROM (おそらく ALTER TABLE の代わりにこれを使用して、処理を少し高速化する機会を増やします)。
私たちが計画しているスキーマの変更は、すべてのテーブルに整数列を追加し、それを現在の主キーではなく主キーにすることです。「古い」列も保持する必要があるため、既存の値を上書きすることはできません。
このタスクを可能な限り迅速に実行するには、どのような設定が理想的ですか?