大量の 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番目の部分で述べているように、バッチ挿入は多くのことを提供します。チェックこれプレゼンテーション。あなたの規模はおそらくはるかに小さいですが、それでも興味深いものになると思います。