0

大規模な Web サイトを強化する MySQL DB (v 5.5) があります。ウェブサイトの一部には、2,000,000 件以上の投稿があるフォーラムが含まれています。

最近、サイトのトラフィックが大幅に増加し (最大 700 -> 1,000 の同時接続)、サイトでのクエリが非常に遅くなりました。スロー クエリ ログを分析すると、次の形式のクエリが多数表示されます。

-- Time: 120923 20:00:08
-- User@Host: muselive_ldu[muselive_ldu] @ localhost []
-- Query_time: 61.101385  Lock_time: 0.000050 Rows_sent: 2  Rows_examined: 346970
SET timestamp=1348430408;
SELECT fp_id FROM ldu_forum_posts WHERE fp_topicid='13731' ORDER BY fp_id ASC LIMIT 2;

-- Time: 120923 20:01:09
-- User@Host: muselive_ldu[muselive_ldu] @ localhost []
-- Query_time: 376.077866  Lock_time: 72.060203 Rows_sent: 2  Rows_examined: 2214232
SET timestamp=1348430469;
SELECT fp_id FROM ldu_forum_posts WHERE fp_topicid='52526' ORDER BY fp_id ASC LIMIT 2;

私は MySQL の専門家ではありませんが、Rows_examined の部分が頭を悩ませています。約 2,000,000 行のテーブルでルックアップを行っていますが、btree インデックスが適用されている「fp_id」でクエリを実行しています。このインデックスが存在するにもかかわらず、Rows_examined カウントは ~300,000 からフル テーブル スキャンまで変動しています。また、fp_topicsid にもインデックスがあることに言及する必要があります。

なぜこれが見られるのか誰か知っていますか?これについての助けを本当に感謝します:)

ありがとう!

4

0 に答える 0