回答:
まず、同時書き込みは、MyISAMストレージのオプションではありません。それぞれがテーブル全体をロックします(場合によっては読み取りを除く)。InnoDBがうまく機能しない場合は、TokuDBを試してください。しかし、TokuDB(もちろんInnoDB)エンジンのトランザクションの性質上、MyISAMに比べて遅くなります(同じデータを少なくとも2回書き込む必要があります:ジャーナルとデータファイル)。また、サーバーがいつかクラッシュした場合、40Gb MyISAMテーブルが修復されるまで数時間待機します。
それでもMyISAMテーブルにデータをロードしたいが、高速に実行したい場合LOAD DATA INFILE
は、挿入の代わりに使用することをお勧めします。これは、大量のデータをテーブルにロードする最も速い方法です。そしてはい、インデックスは指数関数的な方法で挿入のパフォーマンスを低下させます。
パーティションについて:MySQLのINSERTステートメントはプルーニングをサポートしていないため、各ステートメントですべてのパーティションがスキャンされ、一意のインデックスの一致が確認されます。また、すべてのパーティションは挿入が終了するまでロックされます。
これらの挿入クエリは同時ですか、それとも同じプロセスから発生したものですか?それらが並行している場合、MyISAMがテーブル全体をロックし、InnoDBが行ロックを利用するため、このテーブルにはInnoDBストレージを使用する方が適切です。別のストレージに切り替えることができない場合は、INSERT DELAYEDステートメントと他のいくつかの挿入最適化を試すことができます。別のパーティションを別の物理ディスクに配置しない限り、パーティション分割は役に立ちません。