AppEngine Java アプリを実装しました。データストアの読み取り操作が多すぎることを除けば、問題なく動作します。
そこで、appstats
それを分析するツールをインストールしました。単一のリクエストで、コードの1つのポイントで行っていることがわかりました:
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
のに、なぜこれが複数回発行されるのですか?
すでにいくつかのデータストア/永続マネージャー設定を試しましたが、何も役に立ちませんでした:(
何か案は?