如何改善相关内容的获取?

时间:2017-05-02 20:42:27

标签: mysql ruby-on-rails caching

我正在使用 Rails 3.2 内容丰富的网站,在我们的主MySQL(MariaDB)表上有大约3m的记录。

#show操作中,我们会显示5个列表,其中包含20个相关记录(相同型号),每个列表使用不同的列进行匹配(如category_id列)。

我们在这些相关内容部分遇到了很多的性能问题,我们正在寻找改进它的方法。

我们已经为所有列编制了索引,优化了查询(没有创建JOINS)并尝试片段缓存循环......但是,大多数查询大多需要500毫秒到3秒。

从现在的情况来看,我可以想象以下解决方案:

  1. 添加ElasticSearch并使用它来查找相关内容
  2. 添加清漆并缓存整个页面
  3. 创建一个中级"相关"服务类将获取每个相关记录列表,并使用类似content/2/most_viewed_by_category的密钥在Redis上存储 ID 列表,稍后使用此列表再次从数据库中获取记录。这个缓存可以持续3天而不会出现重大问题。
  4. 解决方案3 是最简单的IMO,问题是缓存HIT会很小,因为有3m~记录,每个记录都有自己的缓存列表相关内容。

    每个解决方案都有起起伏伏,也许还有别人可以指示我的东西。

    有问题的数据库是MySQL(MariaDB),在我看来,它本身就是一个问题。

0 个答案:

没有答案