【发布时间】:2019-02-28 03:57:55
【问题描述】:
我目前正在运行从 Postgres RDS 数据库实例获取数据的 AWS EC2 Ubuntu 服务器。在特定页面的视图函数中使用的 SQL 查询之一有很多连接,并且运行速度很慢。我试图减少查询并删除一些可能有点不必要的连接,但加载时间仍然比预期的要长一点(至少 6 秒)。我目前正在研究潜在的缓存策略,以帮助加快页面的服务速度。
我考虑过使用物化视图,但是原始视图函数获取的数据平均每 30 秒更新一次,我担心实施触发器或常规 cron 作业来刷新 MatView 这通常需要花费它对数据库的影响,并且可能不是定期更新和更改数据的最佳策略(除非有人可以建议另一种更新 MatView 中的行的方法,该方法不涉及运行看起来与原始查询非常相似的查询)
到目前为止,我已经在一个 Elasticache 实例上测试了 Redis,并且对它的工作方式印象深刻,但是我也被建议查看 Nginx 和 Varnish 缓存策略。
我有点困惑哪种缓存策略最适合这种情况。与在 EC2 实例上实现 Nginx/Varnish 相比,Elasticache 实例上的 Redis/Memcached 会有点过于重量级吗?尝试在 Nginx 缓存上缓存经常更改的数据是否被认为是一个坏主意?
【问题讨论】:
标签: postgresql amazon-web-services nginx redis materialized-views