6

それぞれがランディング テーブルにデータを挿入する必要がある約 64 の子プロセスを並行処理しています。現在、MySQL MyISAM エンジンを使用しており、挿入の前後でキーを無効にしています。

ただし、これは私のプロセスの大きなボトルネックのようです。MySQLは挿入ごとにテーブルをロックしているため、プロセスは常に書き込みを待機していると思います。

挿入は独立しており、挿入が競合する危険はありません。これには、トランザクションやその性質のものも必要ありません。

別のエンジン、または MySQL の挿入/書き込みパフォーマンスを改善する方法はありますか?

プロセスごとにテーブルをインスタンス化することも考えましたが、これではコードが複雑になり、私のスタイルではありません....

どんな提案でも大歓迎です。

ありがとう!

4

2 に答える 2

4

INSERT DELAYED構文で説明されているように:

ステートメントのDELAYEDオプションは、INSERT標準SQLのMySQL拡張機能であり、完了を待つことができない、または待つ必要のないクライアントがある場合に非常に役立ちますINSERT

[ deletia ]

使用するもう1つの大きな利点はINSERT DELAYED、多くのクライアントからの挿入が1つのブロックにまとめられ、書き込まれることです。これは、多くの個別の挿入を実行するよりもはるかに高速です。

于 2012-12-20T15:17:12.313 に答える
2

MyISAMは、挿入、更新、または削除するときに実際にテーブルをロックします。InnoDBは、トランザクションおよび行ベースのロックを許可します。

一括挿入の方が高速なLOADDATAINFILEを調べることもできます。

于 2012-12-20T15:18:57.037 に答える