私はPHP開発者なので、厳しくしないでください。約5.5GBの大きなテーブルがあります。私たちのPMは、新しい機能を実行するために新しいコラムを作成することにしました。テーブルはInnoDBなので、私が試したのは:
画面ロックでテーブルを変更します。約30時間かかりました。だから止めました。最初にすべてのトランザクションを終了しなかったためにミスをしましたが、2回目はマルチロックではありませんでした。ステータスはでした
copy to tmp table
。このテーブルにもパーティションを適用する必要があるため、ダンプを作成し、名前を変更して、同じ名前と新しい構造のテーブルを作成することにしました。しかし、ダンプは厳密なコピーを作成しています(少なくとも他の何かは見つかりませんでした)。そこで、新しい列をダンプし
sed
てクエリを追加しました。しかし、いくつかの奇妙なエラーが始まりました。文字セットが原因だと思います。utf-8およびfileのテーブルは、後にus-asciiになりましたsed
。そのため、データの30%でエラー(不明なコマンド '\' ')が発生しました。したがって、これも悪い方法です。
これを達成し、パフォーマンスを高速化する他のオプションは何ですか(PHPスクリプトで実行できますが、時間がかかります)。INSERT SELECT
この場合のパフォーマンスはどうなりますか。
事前に感謝します。
SET NAMES utf8
、COLLATION
なぜデータの30%が壊れたのsed
ですか?バルクロードは最速になると思いますが、もっと不足しているものがあるかもしれません。ありがとうマーク