挿入のためにMySQLを高速化する(テスト目的)

挿入のためにMySQLを高速化する(テスト目的)

大量の INSERT を実行する必要のあるソフトウェアを少し持っています。実稼働環境では、大幅な調整やテストなどが必要になりますが、テストが必要なときには、挿入をできるだけ高速化したいと考えています。そこで質問です。mysql を調整して、ディスク I/O をあまり行わずにすべてを RAM に保持し、ディスクとまれに (たとえば n 秒に 1 回) 同期する方法はありますか?

答え1

遅延挿入は、一括挿入を可能にするため役立ちます (MyISAM のみ) (これは MyISAM の得意分野です)。
テーブルのパーティション分割も役立ちます。

メモリが許せば (そしてそれがあなたが求めていることであれば)、メモリ テーブルを使用できます。max_heap_table_size と tmp_table_size の設定がデータに対して十分であることを確認してください。

もう少しトリックを使うと、(Linux では)TMPFS を使用してデータ ファイルをそこに置くことができます(シンボリック リンクを使用)。

答え2

MySQLマニュアルの回答を参照ここINSERT DELAYED特定の質問に回答するには、がまさに必要な機能を果たすかどうかを確認してください。delayed_insert_limitおよびを使用してその動作を調整できますdelayed_queue_size

ただし、INSERT をバッチ処理できる場合は、さらに高速化できます。一括挿入ツールを使用するか、複数の VALUES リストを指定します。例:INSERT INTO table (column) VALUES (val1),(val2),(val3)

答え3

ダニエルが回答の2番目の部分で述べているように、バッチ挿入は多くのことを提供します。チェックこれプレゼンテーション。あなたの規模はおそらくはるかに小さいですが、それでも興味深いものになると思います。

関連情報