mysql:连接访客的平均时间-优化
我工作的系统在这里要解释的稍微复杂一点,但我可以把它简化为更简单的东西 假设我有一个简单的聊天服务器,我计算每个客户端保持连接的秒数,并将其保存在一个表中(我使用的是mysql)。 因此,每次客户端连接时,我都会将其保持连接的时间以秒为单位(int) 如果他断开连接并再次连接,我会将此信息保存在另一行,因为这是我想要的方式。客户端一天连接到服务器的次数在50k-500k之间,甚至更多(我知道,我知道,但这与我复杂的系统有关,但与我这里的问题无关) 我的问题是,我想向每一位客户展示一些关于他的访问的统计数据,类似于谷歌分析(按天计算),更具体地说,我想展示他在某一天花费的平均时间 我正在寻找一种优化的方法来实现这一点。到目前为止,我考虑了以下解决方案:mysql:连接访客的平均时间-优化,mysql,database,database-design,Mysql,Database,Database Design,我工作的系统在这里要解释的稍微复杂一点,但我可以把它简化为更简单的东西 假设我有一个简单的聊天服务器,我计算每个客户端保持连接的秒数,并将其保存在一个表中(我使用的是mysql)。 因此,每次客户端连接时,我都会将其保持连接的时间以秒为单位(int) 如果他断开连接并再次连接,我会将此信息保存在另一行,因为这是我想要的方式。客户端一天连接到服务器的次数在50k-500k之间,甚至更多(我知道,我知道,但这与我复杂的系统有关,但与我这里的问题无关) 我的问题是,我想向每一位客户展示一些关于他的访问
谢谢您可以使用解决方案a,但不要反复计算平均值。您可以通过存储当前平均值和用于计算平均值的项目数量来完成此操作。您的公式如下:
(当前平均*旧项目数量+新项目价值)/(旧项目数量+1)
我认为:
可能会出现速度问题
这还不足以避免最简单、最不容易出错的解决方案,尤其是当确实发生速度问题时,很容易更改
也就是说,如果出现速度问题,我同意你的评估:使用一个计算平均值的计划作业,比添加一个触发器(每次插入都会受到惩罚)要好