1

我有一个问题,我需要你的帮助。

我正在使用 Java 中的 Play Framework v1.2.4,我的服务器已上传到 Heroku 服务器。

一切正常,我可以访问我的数据库,一切正常,但是当我对数据库进行几次保存时,我遇到了麻烦。

我有一种方法可以在数据库中多次存储数据并向手机返回通知。我的问题是通知在数据库完成保存数据之前到达,因为当它到达时,我向服务器请求更新数据,并且它在没有最后一次更新的情况下返回数据。几秒钟后我再次尝试更新,并且数据显示正确,因此我认为存在时间访问问题。这个想法是当数据库结束保存数据时,服务器发送通知。

我不知道这是否是因为我使用的是 Heroku 服务器的免费版本,但我想在购买之前确定一下。

4

1 回答 1

2

一般来说,对云数据库的所有请求总是比在本地机器上的相同请求慢。即使只是简单地查询在您的计算机上只需要 0.0001 秒,在云中也可能慢至 0.5 秒。原因是简单的云提供商使用共享数据库+(地理)复制,这只是......无法与仅由同一台机器上的一个程序访问的数据库进行比较。

还要记住,免费的Heroku DB 计划不提供任何数据库缓存,这意味着每个查询都是直接从云中获取的。

由于我们不了解您的应用程序,因此很难说瓶颈是什么,几乎可以肯定您至少有 3 种方法可以解决您的问题。它们不是替代品,可能您需要使用(或至少检查)所有这些。

  1. 你需要冒险一些基本的计划,看看付费版本的变化,也许它对你来说已经足够了,也许不是。
  2. 重新设计您的应用程序以减少查询。例如,发送 10 个查询来选择 10 个不同的行,您需要发送一个查询,它一次选择所有 10 条记录。
  3. 使用Play 的缓存 API可以避免一次又一次地重复选择同一组数据。例如,如果您有一些类别很少更改,但您需要为每篇文章提供类别树,您不需要每次都从数据库中获取类别,而是可以将类别列表存储在缓存中,这样您就可以只需要使用一个请求来获取文章的内容(也可以缓存一小段时间......)
于 2013-01-14T23:20:58.240 回答