私はこの1つで私を助けることを願っています。私はtwitterサービス(http://foller.me)をパブリックベータ2に更新しようとしていますが、私は少なくとも2〜3秒でページを出すことができるまでこれをしたくありません。現在のバージョンは十分にシンプルですが、私が開発している開発版はかなり複雑です。MySQLの最適化と微調整のヒントを探してください
これは、私のリレーションとプロファイルの両方のテーブルに約200万行含まれています。プロファイルテーブルには一般的なツイッターユーザー情報が含まれており、リレーションテーブルには[twitter_id
、followed_by
]のエントリが含まれています。これらのエントリはどちらもUNIQUEインデックスにあります。しばらくの間毎回実行されるcronジョブがあり、Twitter APIにユーザーのフォロワーについて問い合わせて、リレーションシップデータベースにデータを挿入します。
私はInnoDBを使用しているため、テーブルはロックされていませんが頻繁に更新されるため、特にcronジョブが実行されているときにクエリキャッシュに十分なヒットが得られません。
私はSELECT screen_name FROM profiles WHERE twitter_id IN (SELECT followed_by FROM relations WHERE twitter_id = 'kovshenin')
のようなステートメントを持っています。私はそれを行うには非常に良い方法ではないと確信しています。これらは、私がそれをオンにするとmysql-slowログに出てくるものです(他にもたくさんあります)。
とにかく、私は自分のプロジェクトで良いランタイムを達成するための一般的なヒントが必要です。
ありがとうございます。
TagCloudを成長させる際に私たちが発見したいくつかの問題と解決策をお知らせいたします。 2005年に私に直接連絡したいと思っています。連絡先については、http://blog.gahooa.com/aboutを参照してください。 – gahooa
こんにちはジェイソン、私はあなたに電子メールを落としました。ありがとう – kovshenin