2012-02-19 41 views
4

批次放入更新现有记录是否存在硬限制或性能降级限制?我有一个任务队列进程,其中处理了数千个现有记录。在过程循环结束时,对于所有记录,索引的BooleanProperty从False更改为True。每次执行5000条记录会产生什么结果,而嵌套批处理会导致10次迭代更新每次500次? TIA -stevep批量放入()限制

回答

6

批处理API将按照需要分割大型请求,因此您不需要自己执行该操作。该库管理限制,例如服务呼叫的总大小和可以放入单个呼叫的实体的数量,并对服务进行适当的呼叫次数。 (根据库代码,这似乎是1兆字节,每次拨打电话500个实体,但您的应用程序不需要知道这一点,而这些可能会改变。)分割put()调用没有任何优势,而您如果您尝试,可能会意外地发出比所需更多的服务呼叫。

+5

一个警告:取决于实体的复杂性(主要由属性数量,多次计数列表属性决定),将5000个实体转换为协议缓冲区对象(在将它们序列化为请求之前这是必要的)可能会使用大量的RAM。不幸的是,Dan Sanderson提到的批量分割并不能同时减少内存中的protobuf对象的数量。所以,如果您遇到内存错误,自己创建较小的批次可能实际上有帮助。 – 2012-02-20 04:47:57