約 1,000 行からなる小さなデータ ファイルを MyISAM テーブルにロードしています。
{
id INT(8),
text TEXT(or VARCHAR(1000))
}
LOAD DATA INFILE のコストは約 2 秒です。大きなファイルをロードする場合、MySQL が平均して 1 秒あたり 10,000 行をロードできることを確認しました。また、テーブルのオープン/クローズなどのコストがあることは大まかに知っています。この 2 秒間に正確に何が起こっているかを誰かが知るのを手伝ってくれますか?私のプログラムはタイムクリティカルな環境で実行されているため、数秒で最適化することは可能ですか? ありがとう。
誰かがここで同様の質問をしました http://forums.mysql.com/read.php?144,558753,558753。まだ十分に答えられていないようです。
シナリオの説明
MySQL セットアップ全体は、さまざまなプロジェクト用に約 300G のデータベースを持ついくつかの学術プロジェクト用です。これらのデータベースのほとんどは、すべてではないにしても、MyISAM エンジンにあります。これらのデータベースには、インポートされたダンプと、実験で処理された中間テーブルが含まれています。これらのテーブルには削除操作と更新操作がありますが、現在はすべてアイドル状態です。データベースの 1 つのテーブルに挿入されるいくつかの結果タプルを生成するプロジェクトがあります。テーブルは空に初期化されます。スキーマは非常に単純で、貼り付けたときに 2 つの列しか含まれていません。ENGINE=MyISAM を設定すると、1 ~ 1K 行を挿入するのに常に 2 秒かかりますが、ENGINE=INNODB に切り替えると、0.01 秒になります。別のマシンに新しい MySQL をインストールし、ENGINE=MyISAM でテーブルを作成し、同じ数の行を挿入しました。0.01 秒しかかかりません。