7

速度メモリ使用量の観点から、大きな MySQL テーブルをコピーする最良の方法は何ですか?

オプション 1. PHP を使用して、古いテーブルから X 行を選択し、それらを新しいテーブルに挿入します。すべてのエントリがコピーされるまで、select/insert の次の繰り返しに進みます。

オプション 2.INSERT INTO ... SELECT行制限なしでMySQL を使用します。

オプション 3.INSERT INTO ... SELECT実行ごとにコピーされる限られた数の行でMySQL を使用します。

編集: mysqldump は使用しません。私の質問の目的は、データベース変換プログラムを作成する最良の方法を見つけることです。一部の表は変更されており、一部は変更されていません。テーブルを手動でダンプすることを心配することなく、コピー/変換手順全体を自動化する必要があります。そのため、上記の選択肢のどれが最適かを回答していただけると助かります。

4

7 に答える 7

1

可能であれば、データベースをオフラインにして、データ ファイルをディスクにコピーするのが最速の方法です。

もちろん、これにはいくつかの要件があります。

  • コピー中にデータベースを停止できます。
  • 各テーブルを個別のファイルに格納するストレージ エンジンを使用している場合、MyISAM はこれを行います。
  • データベース サーバーへの特権アクセスがある (ルート ログインなど)

ああ、あなたがあなたの投稿を編集したのを見ました。それなら、この地獄の DBA アプローチはオプションではないと思います...しかし、それでも、それは速いです!

于 2013-05-23T14:26:56.460 に答える
0

私がこれまでに見つけた最良の方法は、ファイルをダンプファイル(.txt)として作成し、outfileをテキストに使用してから、mysqlのinfileを使用して同じデータをデータベースに取得することです

于 2014-03-15T07:42:48.453 に答える