2011-10-30 6 views
0

私はmysql myisamテーブルに〜30kバイトのデータを挿入するマルチプロセススクリプトを持っています(id、timestamp、data)。 最初はすべてが非常に高速ですが、しばらくして(約20-30秒)挿入時間がカップル・ミリ秒から1〜2秒に増えています。MySQLはパフォーマンスドロップダウンを挿入します

私は、MySQLがディスクにデータを書き込んでいることに気付きました。その後、私はしばらくの間、良いパフォーマンスを得ています。私はバルクインサートバッファサイズを別の値に設定しようとしましたが効果はありません。

MySQLにより頻繁に書き込むように強制する方法はありますか? または、あるレベルで速度を挿入する別の方法がありますか?

LOCK TABLE table 
(Do all your inserts) 
UNLOCK TABLE table 

それが原因でインデックスの、おそらく遅いです:

+0

ハードウェアの設定を知らなくても、正確に答えるのは難しいです。 –

+0

キャッシュとバッファサイズに関するMySQL設定ファイルのセクションがあります。 – Jared

答えて

1

はこれを試してみてください。上記のようにすると、インデックスを再構築する前にすべてのデータを追加するようMySQLに強制されます。

また、/etc/my.iniの設定を編集して、インデックスを作成するときにディスクに書き込んでいるように見えるため、MySQLで再生するRAMを増やすことができます。

または、MySQLのtmpディレクトリをRAMドライブに変更してください。それで、ディスクに書き込んでいると思っても、それはメモリに書き込まれます。

+0

それを試してみてください。しかし、私はハードウェアから多くを得たいと思っていました。同じデータをHDDにまっすぐ書いても同じように終わってしまいました。 – Fuxi

+0

MySQLメモリテーブルを使用して、挿入後にこれを通常のテーブルに変換することができます。 – Alasdair

+0

残念ながら、私は常にデータを書き込まなければならないので、通常のテーブルに変換する時間はありません。 – Fuxi

関連する問題