Performance GAE HR数据存储上的db.get([keys])速度非常慢
我正在使用db.get([keys]),并且读取速度非常慢。简单测试至少需要“9008cpu_ms 2125api_cpu_ms”关键帧数组长度约为200正常吗? 实体很小:Performance GAE HR数据存储上的db.get([keys])速度非常慢,performance,google-app-engine,google-cloud-datastore,Performance,Google App Engine,Google Cloud Datastore,我正在使用db.get([keys]),并且读取速度非常慢。简单测试至少需要“9008cpu_ms 2125api_cpu_ms”关键帧数组长度约为200正常吗? 实体很小: p1 = db.StringProperty(indexed=False) - ~20 characters p2 = db.StringProperty(indexed=False, required=True) ~10 characters p3 = db.GeoPtProperty(indexed=False, re
p1 = db.StringProperty(indexed=False) - ~20 characters
p2 = db.StringProperty(indexed=False, required=True) ~10 characters
p3 = db.GeoPtProperty(indexed=False, required=True)
p4 = db.StringListProperty(indexed=False) 10 items x ~10 characters
HRD数据存储中的实体总数:~1000。获取:~200
Appstats显示:
datastore_v3.RunQuery 9ms (29ms api)
datastore_v3.Next 32ms (16ms api)
datastore_v3.Next 11ms (16ms api)
datastore_v3.Next 16ms (16ms api)
datastore_v3.Next 86ms (16ms api)
datastore_v3.Next 8ms (16ms api)
datastore_v3.Next 84ms (16ms api)
datastore_v3.Next 8ms (16ms api)
datastore_v3.Next 92ms (16ms api)
datastore_v3.Next 14ms (16ms api)
datastore_v3.Next 82ms (16ms api)
datastore_v3.Next 8ms (16ms api)
datastore_v3.Next 86ms (16ms api)
datastore_v3.Next 96ms (16ms api)
datastore_v3.Next 7ms (16ms api)
datastore_v3.Next 92ms (16ms api)
datastore_v3.Next 92ms (16ms api)
datastore_v3.Next 9ms (16ms api)
datastore_v3.Next 89ms (16ms api)
datastore_v3.Next 7ms (4ms api)
datastore_v3.Get 5692ms (8ms api)
datastore_v3.Get 5688ms (8ms api)
datastore_v3.Get 5684ms (8ms api)</code>
以及数以百计的:
datastore_v3.Get ~ 5681ms (8ms api)
资料来源:
logging.debug('Fetching ' + str(len(m.keys())) + ' entities')
items = db.get(m.keys())
logging.debug('Done fetching items')
日志:
更新1(2011年10月31日星期一23:33:42 UTC):
在搜索可能的解决方案时,我删除了StringList属性并重新创建了实体。没有变化
样本实体:
ID/Name|description|location|name
id=804|Sample description|54.8968721,23.892426|Sample place
更新2(2011年11月1日星期二12:27:31 UTC):
Appstats输出的屏幕截图:
是的,获取1000个实体(每个实体在listproperty中有10个项目!)需要一段时间是正常的。高CPU毫秒数表示您在解码和处理实体上花费了大量时间,而实际获取实体的API时间除外
请记住,默认情况下GET是强一致的。如果您不需要此功能,您可以通过执行最终一致的get(如文档所述)来加快速度。实际的挂钟时间是多少?其中有多少是重叠的?我曾经有过同样的想法。但我已经从模型中完全删除了List属性,重新创建了实体,得到了非常相似的结果,同样是7-10秒。@Zygimantas,正如我在评论中所问的,wallclock时间是多少?包括appstats跟踪的映像将是理想的。不过,获取1000个实体的速度总是相当慢的-您应该尽量减少在面向用户的请求中必须处理的实体数量。我正在制作屏幕截图,请给我一分钟。@Zygimantas我已经更新了我的答案。请编辑你的问题,包括截图,以便其他人可以从中受益-dropbox的东西往往会在一段时间后消失。最终的一致性策略标志有一点帮助。现在,按键获取50个实体需要2000毫秒而不是4000毫秒。
ID/Name|description|location|name
id=804|Sample description|54.8968721,23.892426|Sample place