Я выполняю запрос, и в настоящее время он возвращает 1400 результатов, и из-за этого я получаю следующее предупреждение в файле журнала:
com.google.appengine.api.datastore.QueryResultsSourceImpl logChunkSizeWarning: этот запрос не имеет размера блока, установленного в FetchOptions, и вернул более 1000 результатов. Если наборы результатов такого размера являются общими для этого запроса, рассмотрите возможность установки размера блока для повышения производительности.
Я нигде не могу найти примеров того, как это реализовать, здесь есть вопрос о python, но поскольку я использую java и не понимаю python, я изо всех сил пытаюсь его перевести.
Кроме того, для выполнения этого запроса (ниже) требуется 17226cpu_ms, что кажется слишком длинным, я даже не могу представить, что произошло бы, если бы у меня было 5000 контактов и мне нужно было искать их на стороне клиента (как вы делаете с контактами googlemail! )
Код, который у меня есть:
int index=0;
int numcontacts=0;
String[][] DetailList;
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
Query query = pm.newQuery(Contact.class, "AdminID == AID");
query.declareParameters("Long AID");
query.setOrdering("Name asc");
List<Contact> Contacts = (List<Contact>) query.execute(AdminID);
numcontacts=Contacts.size();
DetailList=new String[numcontacts][5];
for (Contact contact : Contacts)
{
DetailList[index][0]=contact.getID().toString();
DetailList[index][1]=Encode.EncodeString(contact.getName());
index++;
}
} finally {
pm.close();
}
return (DetailList);
Я нашел здесь следующие две записи:
- chunkSize и prefetchSize механизма приложения Google - где могу я прочитать об этом подробности?
- Низкоуровневый API GAE / J: использование FetchOptions
но на самом деле ни один из них не дает подробностей о том, как реализовать или использовать эти параметры. Я предполагаю, что это процесс на стороне сервера, и я предполагаю, что вы должны настроить какой-то цикл для захвата фрагментов по одному фрагменту за раз, но как мне на самом деле это сделать?
- Могу ли я вызвать запрос внутри цикла?
- Как узнать, сколько раз повторять цикл?
- Должен ли я просто проверять первый блок, который возвращается с количеством записей меньше, чем размер блока?
Как я могу обнаруживать подобные вещи без реального примера для подражания? Мне кажется, что другие люди здесь, кажется, «просто знают», как это делать ...!
Извините, если я задаю вопросы неправильно или я просто новичок в этом вопросе, но я не знаю, куда еще обратиться, чтобы разобраться в этом!