7

データの読み込みを高速化したい。

MySQL 5.5、InnoDBを使用しており、100万行のデータ(65Mbファイル)があります。5分かかります。

InnoDBのLOADDATAINFILEの速度に影響を与えるmysqlの設定とコマンドは何ですか?

ありがとうございました。

4

5 に答える 5

20

読み込み時間を改善するには、次の設定をお勧めします。

  • innodb_doublewrite = 0
  • innodb_support_xa = 0
  • innodb_buffer_pool_size = (システムメモリの 50-80%)
  • innodb_log_file_size = (多数 - 256M など)
  • innodb_flush_log_at_trx_commit = 0

設定以外に、自分でできることがいくつかあります。

  • ロード後にインデックスを作成します (これは 5.5 / InnoDB プラグインによる新しい最適化です)。
  • ロードする前にデータ ファイルをソートします。
  • データ ファイルを分割し、並列で読み込みます。
于 2011-02-19T20:30:18.350 に答える
4

インデックスとトリガーを削除してみてください。ロード後に再作成できます。また、デフォルトの代わりに my-huge.cnf の高負荷設定を使用することも検討してください。

その他の innodb パフォーマンス設定:

http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/

于 2011-02-16T19:16:00.647 に答える
2

これはまさにあなたが探しているものではないかもしれませんが、私が過去に使用したトリックです

ALTER TABLE TABLE_NAME DISABLE KEYS;
LOAD DATA INFILE ... ;
ALTER TABLE TABLE_NAME ENABLE KEYS;

それが役に立てば幸い。

于 2011-02-16T19:25:29.833 に答える
0

ライブ テーブルの内容を置き換えるために急いでいる場合は、代わりに次のようにします。

CREATE TABLE new LIKE live;
LOAD DATA ... INTO new;
RENAME TABLE live TO old, new TO live;
DROP TABLE old;

RENAME「瞬間的」かつアトミックであるため、テーブルのサイズに関係なく「決して」ダウンすることはありません。

(したがって、高速化についてそれほど心配する必要はありませんLOAD。)

于 2015-12-05T00:54:26.130 に答える
0

また、可能であれば、バイナリ ログが無効になっていることを確認してください。

于 2015-01-16T18:30:29.643 に答える