0

Heroku 中的基本生产级数据库实现了 400Mb 缓存。我有一个运行 2 台测功机的生产站点和一个在读写方面非常繁重的工作人员。数据库是我的应用程序的瓶颈。

对数据库的写入将使许多查询无效,因为搜索是在整个数据库中执行的。

我的问题是,鉴于 9 美元的入门级和 50 美元的一级生产数据库之间的价格大幅上涨,迁移是否可能会显着提高性能?

4

2 回答 2

4

“更快”在这里是一个奇怪的指标。这意味着类似于 CPU 的东西,但 CPU 并不总是数据库中的一个重要因素,尤其是在您不进行大量写入的情况下。你的基本数据库有 0mb 的缓存——每个查询都会命中磁盘。与此相比,即使是 400mb 的缓存也会显得惊人。检查您的大致数据集大小;一般的经验法则是让您的数据集适合缓存。Postgres 将自己管理这个缓存,并针对最常引用的数据进行优化。

最终,Heroku Postgres 不出售原始性能。生产层的好处是多方面的,但仅举几例:内存缓存、Fork/Follow 支持、500 个可用连接、99.95% 的预期正常运行时间。

您肯定会看到升级到生产层计划的性能提升,但是几乎不可能声称它“快 3 倍”或类似,因为这取决于您使用数据库的方式。

于 2013-02-08T14:46:34.517 回答
2

这肯定是一个陡峭的步骤,所以问题真的是瓶颈有多严重?这将花费您 40 美元的额外费用,但是一旦您的应用程序再次流畅运行,这也可能意味着更多的收入。当然,您也可以考虑其他托管服务,但我个人最喜欢 Heroku(尽管有更便宜的选择)。此外,您已经熟悉 Heroku。关于 Heroku devcenter 的更多信息,关于他们的不同计划:

https://devcenter.heroku.com/articles/heroku-postgres-plans

生产计划

非生产应用程序或具有最低数据存储、性能或可用性要求的应用程序可以根据行要求在两个入门层计划(开发和基本)之间进行选择。但是,生产应用程序或需要生产层数据库计划功能的应用程序有多种计划可供选择。这些计划主要因内存中数据缓存的大小而异。

缓存大小

每个生产层计划的缓存大小构成了分配给 Postgres 的 RAM 总量。虽然少量 RAM 用于管理每个连接和其他任务,但 Postgres 将利用几乎所有这些 RAM 进行缓存。

Postgres 不断地管理您的数据缓存:您编写的行、您创建的索引以及 Postgres 保留的元数据。当查询所需的数据完全在该缓存中时,性能非常快。从缓存数据进行的查询通常比从完整数据集进行的查询快 100-1000 倍。

精心设计的高性能 Web 应用程序将有 99% 或更多的查询来自缓存。

相反,必须回退到磁盘至少要慢一个数量级。此外,具有大数据类型的列(例如大文本列)通过 TOAST 离线存储,访问大量 TOAST 数据可能会很慢。

于 2013-02-08T14:38:56.783 回答