Для Google App Engine (java), как мне установить и использовать размер блока в FetchOptions?

Im выполняется запрос, и в настоящее время он возвращает 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 Contacts = (List) 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);

Я нашел здесь две следующие записи:

, но на самом деле ни один из них не дает подробностей о том, как реализовать или использовать эти параметры. Я предполагаю, что это процесс на стороне сервера, и я предполагаю, что вы должны настроить какой-то цикл для захвата фрагментов по одному фрагменту за раз, но как мне это сделать?

  • Я вызываю запрос внутри цикла ?
  • Как узнать, сколько раз повторять цикл?
  • Нужно ли мне просто проверять первый возвращаемый фрагмент с количеством записей меньше, чем размер фрагмента?

Как я могу обнаруживать подобные вещи без реального примера для подражания? Мне кажется, что другие люди здесь, кажется, «просто знают», как это делать!

Извините, если я задаю вопросы неправильно или я просто тупой новичок в этом, но Я не знаю, куда еще обратиться, чтобы выяснить это!

10
задан Community 23 May 2017 в 10:29
поделиться