2012-02-12 60 views
1

我想在GAE(Java)來刪除300名000的實體,使用此:AppEngine上:怪異WriteOperation計數時刪除

PersistenceManager pm = PMF.get().getPersistenceManager(); 

Date date70DaysAgo = Calendar.getInstance().getTime(); 
date70DaysAgo.setDate(date70DaysAgo.getDate()-70); 

Query query = pm.newQuery(PositionApplication.class); 
query.setFilter("date <= yyy"); 
query.declareParameters("java.util.Date yyy"); 
query.setRange(0,750); 
Collection<PositionApplication> elements = (Collection<PositionApplication>)query.execute(date70DaysAgo); 

pm.deletePersistentAll(elements); 

我限制在每天50個000寫OPS(免配額) 。我天真地認爲應該在6-7天內完成,但看起來1次電話使用每日配額的1/5。

- >數據存儲寫操作21%          0.01的0.05億行動

10 000寫OPS,何樂而不爲750?

它與索引有關嗎?

回答

1

當您刪除實體時,數據存儲還必須刪除每個屬性索引以及組合索引中的任何條目。

爲每個實體的刪除的計算公式是:

2寫操作+ 2每索引屬性值每個組合索引值+ 1個寫入寫入

參見Billing and Budgeting Resources文件的所有數據存儲的計算操作。

+0

好的......所以我怎樣才能刪除所有的記錄...因爲數據存儲管理員刪除我的配額以及...? – 2012-02-12 16:42:11

+0

不幸的是,沒有便宜或簡單的選擇。您可以啓用結算功能,並在不觸及配額限制的情況下以較小的費用刪除數據,或者您可以慢慢刪除數據。 – Simon 2012-02-12 22:49:43

+0

我已刪除此實體上的所有索引,限制訪問網絡應用程序,並且我將每天手動刪除它們,每天25000個... – 2012-02-13 10:36:48