4
批次放入更新現有記錄是否存在硬限制或性能降級限制?我有一個任務隊列進程,其中處理了數千個現有記錄。在過程循環結束時,對於所有記錄,索引的BooleanProperty從False更改爲True。每次執行5000條記錄會產生什麼結果,而嵌套批處理會導致10次迭代更新每次500次? TIA -stevep批量放入()限制
批次放入更新現有記錄是否存在硬限制或性能降級限制?我有一個任務隊列進程,其中處理了數千個現有記錄。在過程循環結束時,對於所有記錄,索引的BooleanProperty從False更改爲True。每次執行5000條記錄會產生什麼結果,而嵌套批處理會導致10次迭代更新每次500次? TIA -stevep批量放入()限制
批處理API將按照需要分割大型請求,因此您不需要自己執行該操作。該庫管理限制,例如服務呼叫的總大小和可以放入單個呼叫的實體的數量,並對服務進行適當的呼叫次數。 (根據庫代碼,這似乎是1兆字節,每次撥打電話500個實體,但您的應用程序不需要知道這一點,而這些可能會改變。)分割put()調用沒有任何優勢,而您如果您嘗試,可能會意外地發出比所需更多的服務呼叫。
一個警告:取決於實體的複雜性(主要由屬性數量,多次計數列表屬性決定),將5000個實體轉換爲協議緩衝區對象(在將它們序列化爲請求之前這是必要的)可能會使用大量的RAM。不幸的是,Dan Sanderson提到的批量分割並不能同時減少內存中的protobuf對象的數量。所以,如果您遇到內存錯誤,自己創建較小的批次可能實際上有幫助。 – 2012-02-20 04:47:57