7

何百万もの行を MySQL データベース (InnoDB エンジン) に挿入する必要があります。テーブルのサイズが大きい場合、時間に問題があります。ほとんどすべての時間が挿入クエリに費やされます。多分誰かがそれを最適化する方法を知っていますか?

4

2 に答える 2

18

大量のデータを InnoDB にインポートするには:

  1. MySQL構成で設定

    • innodb_doublewrite = 0
    • innodb_buffer_pool_size = 50%+ システムメモリ
    • innodb_log_file_size = 512M
    • ログビン = 0
    • innodb_support_xa = 0
    • innodb_flush_log_at_trx_commit = 0
  2. トランザクション開始直後に追加:

    SET FOREIGN_KEY_CHECKS = 0;

    SET UNIQUE_CHECKS = 0;

    オートコミットを設定 = 0;

  3. トランザクション終了直前に設定:

    SET UNIQUE_CHECKS = 1;

    SET FOREIGN_KEY_CHECKS = 1;

于 2012-08-10T15:53:11.770 に答える
0

多数のINSERTステートメントについて話している場合は、トランザクションと呼ばれるものを調べてください。SQLを実行するほとんどの(すべてではないにしても)言語がトランザクションをサポートしていることは間違いありません。DBへの書き込みに関連するすべての処理を高速化します。追加のボーナスは、何か問題が発生した場合に変更をロールバックできることです。

于 2012-08-10T15:27:01.180 に答える