Heroku中的一个基本生产级数据库实现了400Mb的缓存。我有一个生产站点运行2个dynos和一个工人,这是相当繁重的读和写。数据库是我应用程序中的瓶颈。
当在整个数据库中执行搜索时,对数据库的写入将使许多查询无效。
我的问题是,考虑到9美元的入门级数据库和50美元的一级生产数据库之间的价格大幅上涨,迁移可能会带来显着的性能改进吗?
发布于 2013-02-08 22:46:35
“更快”在这里是一个奇怪的指标。这意味着CPU之类的东西,但CPU在数据库中并不总是一个重要的因素,特别是如果您不是在进行繁重的写入。您的基本数据库有0mb的缓存- every查询命中磁盘。与此相比,即使是400mb的缓存也会令人惊叹。检查您的大致数据集大小;一般经验法则是将您的数据集放入缓存中。Postgres将自行管理此缓存,并针对最常引用的数据进行优化。
归根结底,Heroku Postgres并不出售原始性能。生产层的好处是多方面的,但仅举几个例子:内存缓存、Fork/Follow支持、500个可用连接、99.95%的预期正常运行时间。
在升级到生产层计划时,您肯定会看到性能提升,然而,几乎不可能声称它快3倍或类似,因为这取决于您如何使用数据库。
发布于 2013-02-08 22:38:57
这确实是一个陡峭的步骤,所以真正的问题是瓶颈有多严重?这将花费你额外的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数据可能会很慢。
https://stackoverflow.com/questions/14773571
复制相似问题