我工作的系統稍微複雜一些,但我可以將其簡化爲更簡單。mysql:連接訪問者的平均時間 - 優化
比方說,我有一個簡單的聊天服務器,我計算每個客戶端保持連接的秒數,並將其保存在表中(我正在使用mysql)。 因此,每次客戶端連接時,我都會保存他以秒爲單位保持連接的時間(int) 如果他斷開並再次連接,我將此信息保存在另一行中,因爲這是我想要的。一天中客戶端連接服務器的次數在50k-500k甚至更多(我知道,我知道但這與我的複雜系統有關,但與我的問題無關)。
我的問題是,我想向每個客戶展示他的訪問類似於谷歌分析(按天)的一些統計數據,更具體地說,我有興趣展示他在某一天度過的平均時間。
我正在尋找一個優化的方式來做到這一點。到目前爲止,我已經想過了以下解決方案:
使用選擇表,其中日期= ....但可能會出現速度問題
節省時間平均在一個單獨的AVG(時間)每天和用戶的表。這個解決方案沒問題,但提出了另一個問題:我如何節省平均時間?這裏有我的想法的情況:
一)使用mysql觸發每次客戶端連接(使用INSERT後及時更新統計...)這種解決方案並不差,但就像我說的客戶端可以連接500k次/天,這意味着500k次mysql需要計算平均時間
b)創建一個類似於cron作業或計時器任務的獨立應用程序,每隔X小時更新統計信息,這樣我就知道mysql根據我擁有的客戶端數量,服務器將僅在幾個小時內使用一次。
到目前爲止,我正在考慮實施2.b解決方案,但我說在繼續之前先詢問你。如果你有更好的想法,請分享。
感謝