2

我有一个 MySQL 表来存储 >2MM 行和 8 列的用户统计信息以及用户 ID 上的索引。当用户访问他的个人资料时,会从数据库中检索到很多这些信息,导致 - 最坏的情况 -SELECT有时会与其他表连接几十个查询。它类似于 SO 上的配置文件,它也必须提取大量数据。

一些像获取用户分数的查询需要一个COUNT和其他性能消耗 MySQL 函数。因此,仅对个人资料页面的查询最多可能需要 10-20 秒。

现在我的问题:

  1. 像 SO 这样的网站如何快速获取如此多的信息?
  2. 我需要缓存层吗?
  3. 我是否应该预先计算消耗 MySQL 性能的分数等?
  4. 我应该使用一张写优化表和一张读优化表吗?如果是这样,我怎么能像在 SO 上那样检索实时数据?
  5. 我应该离开 MySQL 吗?
4

1 回答 1

2

像 SO 这样的网站如何快速获取如此多的信息?

它们给你一种提取“这么多”数据的错觉,但实际上它们一次只得到一个数据块。基本上,您需要一个查询来获取结果的 COUNT,并需要另一个查询来获取该结果集中任何页面的数据。结果集未缓存。查询的参数可能会被缓存。但最好以查询参数随每个页面请求一起提供的方式实现。

我需要缓存层吗?

或许。但没有必要实现这一点。缓存对于存储以前获取的页面可能很有用,并且相同的页面被整个社区使用,而不是一个用户。

我是否应该预先计算消耗 MySQL 性能的分数等?

与此用例无关。

我应该使用一张写优化表和一张读优化表吗?如果是这样,我怎么能像在 SO 上那样检索实时数据?

不需要。

我应该离开 MySQL 吗?

不需要。

有关此概念的更多详细信息,请查找分页 Ajax 网格

于 2012-07-17T21:37:52.143 回答