我该如何在PHP中处理用户统计数据?
有两种明显的方法可供选择,但它们都有自己的缺点。
1. 在必要时使用MySQL COUNTs进行选择。这里的缺点是如果你需要计算很多行,那么速度可能会很慢,特别是当你似乎需要在每个页面加载时都这样做时。好处是计数总是正确的。
2. 将用户统计数据存储在统计表中。这里的缺点是每次更改时都必须持续更新它,如果需要批量更新,代码就会过于复杂。好处是选择单个用户的一行统计数据将更快,而不是执行计数。
还有一种可能的方法我有些犹豫,那就是将一个作业存储在队列中(并让Laravel处理它)。这些作业将使用其他表更新所需的统计信息,以便正确同步。好处是它可以减轻Web服务器的负担,缺点是用户可能会得到不正确的统计信息。如果你的朋友列表上显示的实际数字与15个朋友和7个朋友请求不符,那么这是不可取的。
我详细介绍了我提出的方法,并且不确定在为用户提供正确结果、平衡速度和简单性方面哪种最好。如果我使用COUNT方法,那么可能我可以缓存结果,并在统计数据需要更新时删除缓存记录,但是我想为每个用户在缓存表中存储一行可能有点过头了。也许这不是真正的问题,只要数据库有足够的空间就可以了,但是肯定会慢搜索巨大的缓存表。
也许有人可以给我最好的选择来处理用户统计数据。我的头脑已经转得晕了,我需要被放在正确的道路上。
提前感谢你的帮助。
有两种明显的方法可供选择,但它们都有自己的缺点。
1. 在必要时使用MySQL COUNTs进行选择。这里的缺点是如果你需要计算很多行,那么速度可能会很慢,特别是当你似乎需要在每个页面加载时都这样做时。好处是计数总是正确的。
2. 将用户统计数据存储在统计表中。这里的缺点是每次更改时都必须持续更新它,如果需要批量更新,代码就会过于复杂。好处是选择单个用户的一行统计数据将更快,而不是执行计数。
还有一种可能的方法我有些犹豫,那就是将一个作业存储在队列中(并让Laravel处理它)。这些作业将使用其他表更新所需的统计信息,以便正确同步。好处是它可以减轻Web服务器的负担,缺点是用户可能会得到不正确的统计信息。如果你的朋友列表上显示的实际数字与15个朋友和7个朋友请求不符,那么这是不可取的。
我详细介绍了我提出的方法,并且不确定在为用户提供正确结果、平衡速度和简单性方面哪种最好。如果我使用COUNT方法,那么可能我可以缓存结果,并在统计数据需要更新时删除缓存记录,但是我想为每个用户在缓存表中存储一行可能有点过头了。也许这不是真正的问题,只要数据库有足够的空间就可以了,但是肯定会慢搜索巨大的缓存表。
也许有人可以给我最好的选择来处理用户统计数据。我的头脑已经转得晕了,我需要被放在正确的道路上。
提前感谢你的帮助。