首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外耗尽"Datastore Small Operations“配额

意外耗尽"Datastore Small Operations“配额
EN

Stack Overflow用户
提问于 2013-05-13 20:46:28
回答 2查看 114关注 0票数 1

所以这段代码:

代码语言:javascript
复制
all_nodes = Nodes.query()
country_nodes = []
for n in all_nodes:
    country_nodes.append([n.country, all_nodes.filter(Nodes.country == n.country).count()])

甚至还没完成操作就把我的Datastore Small Operations配额都花光了?

获得上述列表的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-13 21:13:31

在GAE中,当你写一个新的记录时,跟踪每个国家的总数可能会更好。然后,您可以进行一次读取,以找出国家/地区总数。例如,可以添加一个新的模型类型:

代码语言:javascript
复制
class Country(db.Model):
    name = db.StringProperty()
    count = db.IntegerProperty()

然后,当您添加一个新节点时,您可以获得相应的Country记录并递增其count属性。

在您的示例中,当您执行all_nodes.filter(...)时,您将为all_nodes中的每个n运行一个新查询。下面,应该是一种更便宜的计算总数的方法。但当你写新的记录时,它可能比跟踪国家总数的成本更高。

代码语言:javascript
复制
from collections import defaultdict

country_nodes = defaultdict(int)
for n in Nodes.query():
    country_nodes[n.country] += 1
票数 1
EN

Stack Overflow用户

发布于 2015-01-19 03:13:44

例如,在count()fetch()中使用limit=n (n=您负担得起的最小值)来查看是否存在任何记录使用count(limit=1)也使用filter() on index来执行count() minimal。在记录的大型数据库中很容易出现“超出数据存储小操作配额”的情况。始终考虑在result中可能有多少记录,或者将在内部进行无索引处理:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16522427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档