最好通过keys_only = True查询,然后get_multi或只查询完整查询?

时间:2012-07-22 00:24:31

标签: python google-app-engine app-engine-ndb

我正在使用带有线程安全模式的python 2.7的NDB。

据我所知,查询具有NDB的实体不使用本地缓存或内存缓存,而是直接访问数据存储区,而不是通过密钥名称获取。 (如果这个前提不正确,问题的其余部分可能是多余的。)

因此,一个好的范例是仅使用keys_only = True查询然后执行get_multi来获取完整的实体吗?

好处是keys_only =真正的查询比keys_only = False快得多,get_multi可能只是命中memcache&通过调用get_multi,您的实体现在保存在memcache中,以防您需要再次执行查询。

缺点是您现在有一个RPC查询调用+ get_multi调用,我认为可以在一个get_multi中调用实体的方式有限,因此您的有效查询大小可能会受到限制。

你怎么看?我们应该只使用keys_only = True查询然后执行get_multi吗?是否存在某些最小和最大查询大小限制,使得此技术不仅仅像执行返回完整实体的查询一样有效?

1 个答案:

答案 0 :(得分:9)