最近、特に InnoDB (MyISAM から) を使用するようにテーブルを切り替えたので、クエリを実行しながらデータベースを更新する機能を利用できSELECT
ます (つまり、それぞれのテーブル全体をロックしないことによりINSERT
) 。
毎週実行されるサイクルがあり、INSERTS
約1億行を使用しています"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."
1 秒あたり約 2000 回の挿入/更新という現在の更新パフォーマンスにはかなり満足しています。
ただし、このプロセスの実行中に、通常のクエリに非常に時間がかかることがわかりました。
たとえば、これは実行に約 5 分かかりました。
SELECT itemid FROM items WHERE itemid = 950768
( INSERT
s が発生していない場合、上記のクエリは数ミリ秒かかります。)
SELECT
クエリの優先度を高くする方法はありますか? それ以外の場合、パフォーマンスを向上させるために MySQL 構成で変更できるパラメーターはありますか?
トラフィックが少ないときにこれらの更新を実行するのが理想的ですが、 SELECT クエリごとに数秒以上かかると、更新とデータベースからの読み取りを同時に実行できるという目的が損なわれるように思われます。私は何か提案を探しています。
Amazon の RDS を MySQL サーバーとして使用しています。
ありがとう!