0
我已經實現了一個AppEngine Java應用程序。它運行得很好 - 除了我有太多的數據存儲讀取操作。AppEngine - JDO - 一次調用批處理get querycute(...)會引發多個datastore_v3.Get調用
所以我安裝了appstats
工具來分析它。這表明了該單個請求我做在我的代碼的一個觀點:
Query query = persistenceManager.newQuery(Info.class,
":keys.contains(key)");
List<Info> storedInfos = (List<Info>) query.execute(keys);
這一次調用execute(...)
結果在多個datastore_v3.Get
電話。我得到這個堆棧跟蹤多次:
com.google.appengine.tools.appstats.Recorder:297 makeAsyncCall()
com.google.apphosting.api.ApiProxy:184 makeAsyncCall()
com.google.appengine.api.datastore.DatastoreApiHelper:59 makeAsyncCall()
com.google.appengine.api.datastore.AsyncDatastoreServiceImpl:351 doBatchGetBySize()
com.google.appengine.api.datastore.AsyncDatastoreServiceImpl:400 doBatchGetByEntityGroups()
com.google.appengine.api.datastore.AsyncDatastoreServiceImpl:292 get()
com.google.appengine.api.datastore.DatastoreServiceImpl:87 get()
com.google.appengine.datanucleus.WrappedDatastoreService:90 get()
com.google.appengine.datanucleus.query.DatastoreQuery:374 executeBatchGetQuery()
com.google.appengine.datanucleus.query.DatastoreQuery:278 performExecute()
com.google.appengine.datanucleus.query.JDOQLQuery:164 performExecute()
org.datanucleus.store.query.Query:1791 executeQuery()
org.datanucleus.store.query.Query:1667 executeWithArray()
org.datanucleus.api.jdo.JDOQuery:243 execute()
de.goddchen.appengine.app.InfosServlet:78 doPost()
它甚至稱executeBatchGetQuery
所以這是爲什麼多次發出?
我已經嘗試了一些數據存儲/ PersistenceManager的設置,但沒有幫助:(
任何想法?
〜100個鍵在〜20個查詢中得到執行,但我該如何控制這種行爲? – Goddchen