实际上,生产层Heroku数据库比起始数据库快多少?

时间:2013-02-08 13:24:11

标签: ruby-on-rails-3 heroku

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

对数据库的写入将使许多查询无效,因为跨数据库执行搜索。

我的问题是,鉴于9美元初始数据库和50美元一级生产数据库之间的价格大幅上涨,迁移可能会带来显着的性能提升吗?

2 个答案:

答案 0 :(得分:4)

“更快”是一个奇怪的指标。这意味着类似于CPU,但CPU并不总是数据库中的一个重要因素,特别是如果你没有做大量写入。您的基本数据库有0mb的缓存 - 每个查询都会访问磁盘。与此相比,即使400mb的缓存也会显得惊人。检查您的近似数据集大小;一般的经验法则是您的数据集适合缓存。 Postgres将自行管理此缓存,并针对大多数引用的数据进行优化。

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

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

答案 1 :(得分:2)

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

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

  

生产计划

     

非生产应用程序或具有最小数据存储,性能或可用性要求的应用程序可以根据行要求在两个启动层计划之一(dev和basic)之间进行选择。但是,生产应用程序或需要生产层数据库计划功能的应用程序有多种计划可供选择。这些计划主要取决于其内存数据缓存的大小。

     

缓存大小

     

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

     

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

     

精心设计的高性能Web应用程序将从缓存中提供99%或更多的查询。

     

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