NDB put_multi可以帮助保存写操作吗?

LA_*_*LA_ 3 google-app-engine quota app-engine-ndb

GAE文件说明了这一点

因为每个get()或put()操作都调用一个单独的远程过程调用(RPC),所以在循环内发出许多这样的调用是一次处理实体或键集合的低效方法.

我不明白究竟an inefficient way是什么意思.它可以帮助我保存写操作吗?

Tim*_*man 5

不,它不能减少写操作.但它可以节省rpc.

想想发生了什么.当您调用put()时,RPC发送数据并等待响应,该调用内部是对数据存储区的写入.

如果一个RPC有30ms的开销而没有使用matler它正在做什么(为了这个参数我正在编写这个数字).并且写入需要额外的20ms.然后每个put()调用需要30ms rpc往返+ 20ms实际写入= 50ms.

如果你在循环中执行100次put()调用,则需要500ms.

但是,如果使用put_multi()或db.put([实体列表]),那么您将只有一个RPC.这意味着单个30ms RPC和100*20ms写入.哪个出现在230ms.好吧,这些数字并不准确,只有一个实体的单个RPC需要比一个实体花费更长的时间.但是你明白了.