50

mySQL のダンプとインポートを高速化するための文書化された手法はありますか?

これには、RAM ディスクの使用など、my.cnf 設定が含まれます。

文書化された手法のみを探し、できれば速度向上の可能性を示すベンチマークを使用します。

4

9 に答える 9

24
  1. HighPerformanceMySQLのコピーを入手してください。素晴らしい本。
  2. ダンプの拡張挿入
  3. --tab形式でダンプして、mysql<dumpfileよりも高速なmysqlimportを使用できるようにします。
  4. テーブルごとに1つずつ、複数のスレッドでインポートします。
  5. 可能であれば、別のデータベースエンジンを使用してください。innodbのようなトランザクションの多いエンジンへのインポートは非​​常に遅いです。MyISAMのような非トランザクションエンジンへの挿入ははるかに高速です。
  6. Maakitツールキットのテーブル比較スクリプトを見て、テーブルをダンプしてインポートするのではなく、テーブルを更新できるかどうかを確認してください。しかし、あなたはおそらくバックアップ/復元について話しているでしょう。
于 2008-09-16T14:24:16.013 に答える
15

http://www.maatkit.org/には mk-parallel-dump と mk-parallel-restore があります

マルチスレッドの mysqldump が必要だった場合は、もう必要ありません。このツールは、MySQL テーブルを並行してダンプします。これは、mysqldump のラッパー (賢明なデフォルト動作) として、または SELECT INTO OUTFILE のラッパーとして機能できる、よりスマートな mysqldump です。これは、速度が非常に重要な、非常に大きなデータ サイズの高性能アプリケーション向けに設計されています。複数の CPU とディスクを利用して、データをはるかに高速にダンプします。

mysqldump には、ダンプのインポート中にインデックスを作成しないなど、さまざまな潜在的なオプションもありますが、代わりに完了時にまとめて作成します。

于 2008-09-16T22:21:55.443 に答える
13

InnoDB にインポートする場合、最も効果的な方法は次のとおりです。

innodb_flush_log_at_trx_commit = 2

my.cnf、インポートの実行中に一時的に。1ACID が必要な場合は元に戻すことができます。

于 2008-09-16T14:40:50.200 に答える
5

あなたの質問は、ボトルネックがどこにあるかにも依存すると思います。

  • -Cネットワークがボトルネックになっている場合は、 /への--compressフラグを確認することもできますmysqldump
  • コンピュータのメモリが不足している場合 (つまり、スワッピングが開始された場合) は、追加のメモリを購入する必要があります。

また、(およびMyIsam を使用している場合)の--quickフラグを見てください。mysqldump--disable-keys

于 2010-04-19T09:15:37.047 に答える
4

外部キー チェックをオフにして、自動コミットをオンにします。

于 2008-09-16T14:32:22.233 に答える
4

ダンプで拡張挿入を使用すると、インポートが高速になります。

于 2008-09-15T21:36:25.233 に答える
1

mysqlhotcopyMyIsam テーブルしかない場合は、代わりになるかもしれません。

于 2010-04-19T09:16:57.433 に答える
-2

インデックスを使いすぎず、クエリ キャッシュを有効にし、大きなデータベースには sphinx を使用します。ここにいくつかのヒントがあります http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (フランス語で)

于 2011-08-18T22:55:35.197 に答える