python - 最好先按 keys_only=True 然后按 get_multi 查询还是只按完整查询?

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

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

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

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

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

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

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

最佳答案

关于python - 最好先按 keys_only=True 然后按 get_multi 查询还是只按完整查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596869/

相关文章:

python - Pytest - pytest_generate_tests 中的 tmpdir_factory

google-app-engine - 将 AppEngine 中的传入请求路由到不同版本

java - 如何使安全信息远离 App Engine 日志?

google-app-engine - 是否可以在我自己的服务器上运行 Google App Engine Development Server?

google-app-engine - 在本地环境中重定向后,我是否应该期待过时的结果?

java - 如何向数据库添加标签

python - 如何在 Python 中追加仅包含 True 值的列表?

python - 如何从指向字符串的 PyObject 获取 char*

python - 为什么 mydict.items().sort() 不起作用?

google-app-engine - 从 StringProperty 切换到 StringProperty(repeated=True)