Python 最好按关键字\u only=True进行查询,然后获取\u multi还是只进行完整查询?
我在Python2.7中使用NDB,并且启用了线程安全模式 我知道,使用NDB查询实体不使用本地缓存或memcache,而是直接进入数据存储,而不是按键名获取。(如果这个前提不正确,问题的其余部分可能是多余的。) 因此,一个好的范例是只使用key_only=True进行查询,然后执行get_multi来获取完整的实体吗 这样做的好处是,keys_only=True查询比keys_only=False快得多,get_multi可能只会点击memcache&通过调用get_multi,您的实体现在保存在memcache中,以防您需要再次执行查询 缺点是您现在有一个RPC查询调用+get_multi调用,我认为在一个get_multi调用中可以调用的实体是有限制的,因此您的有效查询大小可能会受到限制Python 最好按关键字\u only=True进行查询,然后获取\u multi还是只进行完整查询?,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,我在Python2.7中使用NDB,并且启用了线程安全模式 我知道,使用NDB查询实体不使用本地缓存或memcache,而是直接进入数据存储,而不是按键名获取。(如果这个前提不正确,问题的其余部分可能是多余的。) 因此,一个好的范例是只使用key_only=True进行查询,然后执行get_multi来获取完整的实体吗 这样做的好处是,keys_only=True查询比keys_only=False快得多,get_multi可能只会点击memcache&通过调用get_multi,您的实体现在保
你觉得怎么样?我们是否应该只使用key\u only=True进行查询,然后执行get\u multi?是否存在某些最小和最大查询大小限制,使得该技术不如只执行返回完整实体的查询有效?这一点已经得到了广泛的研究。请参见考虑您的应用程序数据访问模式,如果查询结果的很大一部分不太可能在缓存中,或者在一段时间内不太可能再次使用,那么您的缓存未命中率将始终很高。至于仅键查询和get_multi查询与普通查询之间的直接性能比较,为什么不对预期的使用模式运行一些测试呢?谢谢链接。总之,如果您知道大多数实体已经在memcache中,那么执行只包含键的查询以及返回实体键的get\u multi查询是有好处的。