我有一个MySQL表来存储用户统计信息,其中包含> 2MM行和8列以及userID上的索引。当用户访问他的个人资料时,从数据库中检索到很多这些信息,导致 - 最坏的情况 - 几十个SELECT
查询有时会与其他表联系在一起。它类似于SO上的配置文件,它也必须提取大量数据。
一些想要获得用户分数的查询需要COUNT
以及其他使用MySQL功能的性能。因此,只需查询配置文件页面最多可能需要10-20秒。
现在我的问题:
答案 0 :(得分:2)
像SO这样的网站如何快速提取这么多信息?
他们给你一个拉“太多”数据的错觉,但实际上他们一次得到一个块。基本上,您需要一个查询来获取结果的COUNT,另一个查询来获取该结果集中任何页面的数据。结果集未缓存。可以缓存查询的参数。但最好以每种页面请求提供查询参数的方式实现。
可能是。但没有必要实现这一点。缓存可能对存储以前提取的页面很有用,整个社区使用相同的页面,而不是一个用户。我需要缓存层吗?
我应该预先计算消耗MySQL性能的分数等吗?
与此用例无关。
我应该使用一个写入优化表和一个读取优化表吗?如果是这样,我怎样才能检索SO上的实时数据?
不需要。
我应该离开MySQL吗?
不需要。
有关此概念的更多详细信息,请查找分页的Ajax网格