【问题标题】:Google Datastore Long Query Time谷歌数据存储长查询时间
【发布时间】:2016-07-17 03:57:45
【问题描述】:

我正在使用 Google Datastore 查询具有 25 个属性的某种实体。我在这种 Datastore 中只有 5 个实体,但是当我查询这些实体时,创建新查询平均需要 2 秒,准备查询平均需要 4 秒。在随后的提取中,整个过程只需要 500 毫秒。我对这种实体有两个索引。有什么方法可以提高初始提取的性能?

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("Producers").setFilter(new FilterPredicate("name", FilterOperator.EQUAL, searchName));
List<Entity> producers = datastore.prepare(q).asList(FetchOptions.Builder.withDefaults());

【问题讨论】:

  • 是初始查询还是部署后对您的实例的初始请求?如何区分“初始”查询和“后续”查询?
  • 初始查询是实例未运行且需要启动时。后续查询是在发出请求时实例已经在运行。

标签: java google-app-engine google-cloud-datastore


【解决方案1】:

您面临的问题与您的查询、实体或索引的数量无关。即使您将代码减少到 System.out.print("Hello!"),您的实例也需要 6-8 秒才能启动和响应。带有代码注入等的复杂应用程序可能需要更长的时间。

如果此启动时间对您很重要,您可以将扩展模型从“自动”切换为“基本”或“手动”,以使至少一个实例始终可用。即使这样,当需要启动第二个实例等时,您也可能会遇到此问题,但此问题的重要性会随着实例数量的增加而迅速消失(例如,如果正在运行的实例支持 10,000 个活跃用户,则只有第 10,001 个有经验的用户这个延迟)。

另请注意,自动扩展实例会在大约 15 分钟不活动后关闭。同样,如果您的应用有足够多的用户永远不会关闭,那么您的绝大多数用户将永远不会面临这种延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2012-11-20
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多