我正在使用一个查询,其中我使用条件加载组加载相关实体:
@Entity @Cache
public class Result {
@Load(WithUser.class) @Index private Ref<User> user;
@Load(WithTile.class) @Index private Ref<Tile> tile;
@Load(WithLayer.class) private Ref<Layer> layer;
@Load(WithOverlay.class) private Ref<Overlay> overlay;
//..
}
我意识到与我运行的大多数其他查询相比,查询成本高出约100倍。我认为成本太高,因为50个结果加上4x50 getByKey()[对象应当批量处理]不应该在CPM_US 0.005范围内。
是否可以记录objectify如何分解查询以及它对数据存储区执行的请求,以便通过编写更有效的查询来降低成本。
这里有一个类似的问题尚未得到解答:How to enable DEBUG logging on Objectify
答案 0 :(得分:1)
您可以使用Appengine提供的appstat servlet来探索数据存储操作方面的情况。 我认为最简单的方法是:
使用以下官方说明安装appstat servlet:https://developers.google.com/appengine/docs/java/tools/appstats
上传到appengine的新版本,调用servlet,然后查看appstat统计信息
一个更简单的方法可能是尝试在官方的Objectify Google Group上问Jeff; 他反响敏捷,过去一直帮助我。 https://groups.google.com/forum/#!forum/objectify-appengine
重要说明:由于多种原因,appstats一直在我们的服务器上引发错误并导致崩溃,其中一个原因是日志跟踪太长时间 - 我强烈建议您只在受控的暂存环境中尝试它。