我有一个 MySQL 表来存储 >2MM 行和 8 列的用户统计信息以及用户 ID 上的索引。当用户访问他的个人资料时,会从数据库中检索到很多这些信息,导致 - 最坏的情况 -SELECT
有时会与其他表连接几十个查询。它类似于 SO 上的配置文件,它也必须提取大量数据。
一些像获取用户分数的查询需要一个COUNT
和其他性能消耗 MySQL 函数。因此,仅对个人资料页面的查询最多可能需要 10-20 秒。
现在我的问题:
- 像 SO 这样的网站如何快速获取如此多的信息?
- 我需要缓存层吗?
- 我是否应该预先计算消耗 MySQL 性能的分数等?
- 我应该使用一张写优化表和一张读优化表吗?如果是这样,我怎么能像在 SO 上那样检索实时数据?
- 我应该离开 MySQL 吗?