2011-12-25 12 views
3

私は問題が何かを見つけることができません。MySQLは私のサイトに非常に遅い負荷を与えます

私のホームページには5秒かかるので、MySQLのために非常に疑わしいです。ブラウザに自分のサイトのURLを入力すると、5秒間待たなければなりません。

私は、インテルceleron、centosと1GB RAMを搭載した専用サーバーを持っています。私のデータベースは約200kの記録とサイズに650MBであり、私は、インデックス、日付、IDなどをここで

は私のSQLクエリは、ホームページに使用されているために作成した:私は

などのすべてのすべてを試み

select `id`,`title`,`desc`,`contribution`,`date`,`sponsored`     
from tbl_releases where date <= CURRENT_DATE() AND approved='1' 
order by `date` desc,`sponsored` desc,`con` desc,`id` desc 
limit 100 

  1. my.cnfをバッファなどで最適化しても、サイトのパフォーマンスは向上しません。
  2. 最適化テーブル。

P.S:データベースサイズはパフォーマンスに影響しますか?私はデータベースに50%以上の迷惑メールがあり、無駄な行を削除するとパフォーマンスが向上しますか?


アップデート:私は、データベース内のクリーンアップジャンクを行なったし、パフォーマンスが劇的に改善し、私は、サーバーの負荷とmysqlのCPU使用率はわずか5%と大幅にダウン36%からなくなったことに気づきました。しかし、それでも私が理解していないのは、なぜこのような大きなデータでmysqlが減速しているのか、その多くのデータをかなり処理するはずです。ではない?

Btw、私はスマートなエンジンを使用していますが、これにもかかわらず、サイトは減速しています。

+0

200kレコードの50%がゴミすぎる!それでもロード時間を短縮できない場合は、このAjaxを作成してローダーアイコン – GoodSp33d

+2

@pbuを表示しないようにしてください。このクエリを実行すると、ロードが速くなりますか? MySQLは大規模なデータベースを扱うことができるため、最適化されていない可能性があります。あなたはそのテーブルにインデックスを持っていますか? – Matt

+1

あなたはSELECTとid'の間にスペースがなく、他の構文エラーもあります。これがあなたのホームページにある質問ですか?それは失敗するだろうから。 –

答えて

1

まあ、クエリをCLIから実行するとどれくらいかかるのですか?

実際にあなたのデータベースであれば驚くでしょう。 200K行はそれほど大きくありません。

クエリに適切なインデックスがある場合、クエリの時間は時間のログとともに増加します。そうでなければ線形である。

1

  • バートは、データベース内の
  • 不適切なインデックス画像の
  • ロット
  • 大画像
  • スクリプトのロット など

MySQLが一つの理由が考えられますので、作ることが可能に照会データベースを整理し、適切なインデックスを作成し、Memcacheなどを使用してください。また、を使用して選択クエリを分析してください

Hereは、ウェブサイトの最適化に関する記事です。

6

はまあ、あなたのサイトが遅くなる可能性が多くの理由があり、サーバーのパフォーマンスを改善するのに役立ちますMemcacheするMemcacheを使用して

0

TABLEに結果が表示されている場合、Internet Explorerは - 少なくとも一部のバージョンでは - 遅く表示されます。あなたは他のブラウザを試しましたか?

2

いくつかのアイデア:

私はあなたがそのクエリごと時間を実行する必要があります疑います。ホームページに含める静的ファイルにデータをキャッシュします。定期的にまたはデータが変更されたときにファイルを再生成します。

WHERE句で使用されている列のインデックスを追加すると、sの速度が遅くなりますが、SELECT時間を大幅に改善できます。すでにインデックスがある場合は、EXPLAIN SELECTコマンドを使用してインデックスを使用していることを確認してください。

200k行の650MBの場合、おそらく(?)のサムネイルをそのテーブルに保存しているのだろうか。もしそうなら、それはそれを説明することができます。データベースは、多数の小さなデータに対して最適化されています。ファイルシステムは、より少ない数のより大きなデータチャンクに対して最適化されています。大規模なデータがファイルに移行できる場合は、パフォーマンスが向上します。

実際に私がそれを正しく読んでいるなら、あなたはその時間がデータベースにまったく費やされていないことを確認していません。コードのベンチマークを振りかざして、時間の経過を追跡します。スクリプトの最初と最後、または疑わしい部分の始めと最後に$_start = microtime(1);echo "Done in " . number_format(microtime(1) - $_start, 2) . " seconds.<br>";を使用してください。

0

"私はMySQLのために非常に疑いがあります"

「知っている」>疑わしい。

これを測定してください! FirebugまたはChrome開発ツールを使用してページスピードを測定します。

  1. コマンドラインでクエリを実行すると、どのくらい時間がかかりますか?長すぎる - >最適化する
  2. 読み込んでいるページの重さはどれくらいですか? (Firebug/Chrome開発ツールを使用する) - >重すぎますか? YSlow these guidelinesを使用してください。
  3. サーバー上に静的なファイルとしてページコンテンツを配置し、ロードします。これは大幅に高速です。コンテンツを生成するコードです。 memcacheのようなサーバー側のキャッシュを使用します。
  4. まだ十分に高速ではありませんか? Nginxのような別のウェブサーバを使ってみてください。

数字4について:それはかなりハイテクです。最初に「下垂れ果実」を入手してください。

関連する問題