私が動作するシステムはここで説明するのが少し複雑ですが、私はそれをより簡単なものに減らすことができます。mysql:接続された訪問者の平均時間 - 最適化
私はシンプルなチャットサーバーを持っていて、すべてのクライアントが接続したままになっている秒数をカウントしてテーブルに保存します(私はmysqlを使用しています)。 クライアントが接続するたびに、接続されている時間を秒単位で保存します(int) 彼が切断して再び接続すると、この情報は別の行に保存されます。クライアントが1日にサーバに接続する回数は、50k〜500kまたはそれ以上です(私は知っていますが、これは私の複雑なシステムに関連していますが、私の質問とは無関係です)。
私の問題は、グーグルアナリティックスに似た訪問者の統計情報(日数)をすべてのクライアントに表示したいということです。具体的には、特定の日に費やした平均時間を表示することに興味があります。
私はこれを行う最適な方法を検討しています。これまでのところ私は、次の解決策について考えてきました:
使用は日付が= ....しかし、スピードの問題が
が別々に平均時間の節約に発生する可能性があるテーブルから平均(時間)を選択します毎日とユーザーのためのテーブル。このソリューションは問題ありませんが、平均時間をどのように保存すればよいですか?
統計にクライアントは、私がクライアントを言っしかし同様に、このソリューションが悪いわけではない)... AFTER INSERTを使用して(接続されるたびに更新するために、MySQLのトリガーを使用A):ここで私が考えていた状況があります平均500時間を500k回接続することができます。mysqlは平均時間を計算する必要があります
b)cronジョブや、X時間ごとに統計を更新するタイマータスクと同様の別のアプリケーションを作成します。サーバーは、私が持っているクライアントの数に応じて数時間に1回しか使用されません。
これまでのところ、私は2.bソリューションを実装することを考えていますが、先に進む前にまず尋ねると言いました。あなたが良いアイデアを持っている場合は、共有してください。
おかげ