ホームページ  >  に質問  >  本文

mysql大表如何修改表结构,如增加字段或修改字段类型

怪我咯怪我咯2742日前616

全員に返信(2)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:46:52

    大規模な MySQL テーブルにフィールドを追加する考え方は次のとおりです:

    1. 一時的な新しいテーブルを作成し、最初に古いテーブルの構造 (インデックスを含む) をコピーします

      old_table のようなテーブル new_table を作成します;

    2. 新しいフィールドを新しいテーブルに追加します

    3. 古いテーブルからデータをコピーします

      新しいテーブルに挿入(filed1,filed2…) select filed1,filed2,… from old_table

    4. 古いテーブルを削除し、新しいテーブルの名前を古いテーブルの名前に変更します

    3番目のステップを実行する場合、このプロセスにも時間がかかる可能性があることに注意してください。このとき、新しいデータが入ってくるため、元のテーブルにデータの書き込み時間を記録するフィールドがあると最適です。データに対してこの手順を実行し、データの差が非常に小さくなるまで新しいテーブルへのインポートを繰り返します。ただし、非常に少量のデータが失われる可能性があります。

    したがって、テーブル内のデータが特に大きく、データの整合性を確保する必要がある場合は、操作をシャットダウンするのが最善です。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 16:46:52

    Percona にはオンライン DDL ツールがあり、その原理は一時テーブルを使用して新しいデータ転送トリガーを追加することです。

    返事
    0
  • キャンセル返事