2011-12-22 5 views
1

私はすでに問題に直面している人から助言が必要です。LOAD DATA INFILE - 大きなファイルがある場合はどのエンジンですか?

私は10ミルを超えています。新しいテーブルにインポートする* .txtファイルを記録します。まず、テーブルエンジンの最適な選択について、「専門家のアドバイス」を探していました。

残念ながら、InnoDBの意見は50%、MyISAMの意見は50%でした。あなたの経験から、情報の量を念頭に置いて、私のテーブルエンジンに最適なLOAD DATA INFILEを使用するという事実から、 そして、私にいくつかの強力な議論を与えてください:)ちょうど1つまたは他を使用するアドバイスではありません!

2番目:選択するエンジンを決めたら、将来的にはテーブルをトランザクションで使用する必要がある場合は、MyISAMのエンジンを「一時的に」変更することをおすすめします。 InnoDBへのテーブルをトランザクションを実行するために、そしてその後、最初に選択した選択肢に戻ってくるのですか?

答えて

1

Innodbはメモリ内のインデックスを持つことが大好きですが、できない場合はかなり遅くなります。 MyISAMは大量のデータを持つ低メモリの状況ではるかに優れています。また、大きなテーブルを小さいテーブルに分割し、小さなテーブルから仮想/マージテーブルを作成することができるMERGEテーブルのようなMyISAMで利用できる独自のオプションがいくつかあります。

多くの変更(挿入/更新/削除)を行っている場合は、Innodbのほうが優れています(ロックの問題が少なくなります)。しかし、MyISAMは、あなたが同時に変更を加えていないとうまくいくでしょう。

スイッチングテーブルタイプは時間がかかりますが、オプションです。 MyISAMとInnodbの両方を使いたい場合は、複製をセットアップしてください。 1台のサーバーにInnodbテーブルを、レプリケーションサーバーにMyISAMを持つことができます。マスター/スレーブでテーブルの種類が同じである必要はありません。

+0

私は、5億以上のレコードを持つMyISAMである "ログ"テーブルを持っています。あなたが挿入するだけの場合、MyISAMは素晴らしいです。 LOAD DATAをスピードアップするには、ソートバッファを本当に高く設定する必要があります(テーブルタイプに関係なく)。インポート後にそれらを下げてください。 –

関連する問題