- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Google App Engine java 应用程序,它可以很好地满足我的需求,但我想针对数据存储操作成本进行优化。
我知道小型数据存储操作是 free ,并且来自同一篇文章,仅键查询使用小操作...
Small datastore operations include calls to allocate datastore ids or keys-only queries
...所以我预计,如果我进行仅键查询,并使用第一个检索到的“实体”中的键来获取完整实体,那么它应该花费我 1 个小操作,加上一个(大)读取总的操作 - 只有后者需要花钱。这与 this 中使用的逻辑完全相同堆栈溢出问题。如果我仅通过执行常规查询并获取第一个实体来运行相同的操作,那么我将花费 1 + 1(大)读取。
但是...当我在我的应用程序上运行 appstats 时,我看到查询花费了我 1 Read,加上 1 small,然后我还必须为 get 付费:
@15ms datastore_v3.RunQuery real=8ms api=0ms cost=80 billed_ops=[DATASTORE_READ:1, DATASTORE_SMALL:1]
@6ms datastore_v3.Get real=7ms api=0ms cost=70 billed_ops=[DATASTORE_READ:1]
...所以与我之前所做的相比,这比我预期的多了 1 次阅读,以及 1 次额外的小操作。
Java 代码示例如下所示:
Query query = new Query(<Entity Name>).setKeysOnly();
Filter filter = new FilterPredicate(<Field Name>, Query.FilterOperator.EQUAL, <Some Value>);
query.setFilter(filter);
List<Entity> resultsSet = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(<Max Rows>));
Entity entity = datastore.get(resultsSet.get(0).getKey());
问题是:我是不是实现错误了,或者我只是误解了定价的运作方式?谢谢。
最佳答案
您链接到的定价文档清楚地表明每个查询花费 1 次阅读。常规查询也会对每个实体收取 1 次读取费用,而仅键查询不会对每个实体收费。
因此,如果您想要检索一个实体,使用仅键查询然后使用 get
检索实体的成本更高。如果您检索两个实体,它会变得均匀。如果要检索数千个实体,与常规查询相比,仅键查询基本上是免费的。
关于java - 谷歌应用引擎 : Why are key-only datastore queries costing me 1 READ plus 1 SMALL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144682/
我是一名优秀的程序员,十分优秀!