GAE文件说
因为每个get()或put()操作都会调用一个单独的远程 过程调用(RPC),在循环内发出许多这样的调用是一个 一次处理实体或密钥集合的低效方法。
我不明白an inefficient way
究竟是什么意思。它可以帮我保存写操作吗?
答案 0 :(得分:5)
不,它无法减少写入操作。但是它可以保存RPC。
想想发生了什么。当你调用put()时,RPC发送数据并等待响应,在该调用内部是对数据存储区的写入。
如果单个RPC的开销为30ms,无论它在做什么(我为了参数而将这个数字增加)。并且写入需要额外的20ms。然后每个put()调用需要30ms rpc往返+ 20ms实际写入= 50ms。
如果在循环中执行100次put()调用,则需要5000ms。
但是,如果使用put_multi()或db.put([实体列表]),那么您将只有一个RPC。这意味着单个30ms RPC和100 * 20ms写入。哪个出现在2030ms。好吧,这些数字并不准确,只有一个实体的单个RPC需要比一个实体花费更长的时间。但是你明白了。