11

我将 NDB 与 python 2.7 一起使用,并打开了线程安全模式。

我知道使用 NDB 查询实体不使用本地缓存或内存缓存,而是直接进入数据存储区,这与通过键名获取不同。(如果这个前提不正确,剩下的问题可能是多余的。)

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

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

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

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

4

1 回答 1

10

这已被广泛研究。请参阅http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118

于 2012-07-22T19:31:11.430 回答