Im chạy một truy vấn và nó đang trở về 1400 kết quả và vì điều này tôi nhận được cảnh báo sau đây trong file log:Đối với Google App Engine (java), làm cách nào để đặt và sử dụng kích thước chunk trong FetchOptions?
com.google.appengine.api.datastore.QueryResultsSourceImpl logChunkSizeWarning: Truy vấn này không có kích thước chunk được đặt trong Tìm nạp và đã trả về hơn 1000 kết quả. Nếu tập hợp kết quả là kích thước này là phổ biến cho truy vấn này, hãy xem xét đặt kích thước chunk thành cải thiện hiệu suất.
Tôi không thể tìm thấy bất kỳ ví dụ nào về cách thực sự triển khai, có câu hỏi ở đây về python, nhưng khi sử dụng java và không hiểu python, tôi đang cố gắng dịch nó. Ngoài ra, truy vấn này (dưới đây) là 17226cpu_ms để thực thi, cảm giác như quá dài, tôi thậm chí không thể tưởng tượng điều gì sẽ xảy ra nếu tôi đã nói 5000 địa chỉ liên hệ và cần tìm kiếm thông qua chúng ở phía khách hàng (như bạn làm ! với địa chỉ liên lạc googlemail)
mã tôi có là:
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);
tôi thấy hai mục sau trên đây:
- google app engine chunkSize & prefetchSize - where can I read details on it?
- GAE/J Low-level API: FetchOptions usage
nhưng không thực sự đi vào bất kỳ chi tiết về làm thế nào để thực hiện hoặc sử dụng các tùy chọn này. Tôi đoán nó là một tiến trình phía máy chủ, và tôi đoán rằng bạn có ý định thiết lập một loại vòng lặp nào đó để lấy từng đoạn một, nhưng làm cách nào để thực sự làm điều đó?
- Tôi có thể gọi truy vấn trong vòng lặp không?
- Làm cách nào để biết số lần lặp lại?
- Tôi chỉ cần kiểm tra đoạn đầu tiên quay trở lại với số lượng nhỏ hơn số lượng mục nhập không?
Tôi muốn tìm hiểu những thứ như thế này mà không cần ví dụ thực tế để làm theo? Dường như với tôi rằng những người khác ở đây dường như "chỉ biết" làm thế nào để làm điều đó ..!
Xin lỗi Nếu tôi không hỏi những câu hỏi đúng cách hoặc tôi chỉ là một người mới làm mờ về điều này, nhưng tôi không biết nơi khác để chuyển sang con số này ra!
Tôi không chắc chắn cách diễn đạt lại câu hỏi của mình, vì vậy Im sẽ trả lời nhận xét của bạn. Tôi có nghĩa là chỉ cần thay thế một dòng mã của tôi: "Danh sách Liên hệ = (Danh sách ) query.execute (AdminID);" với hai dòng mã của bạn? Nếu vậy bạn có thể giúp tôi bằng cách thay đổi mã của bạn để phù hợp với các biến trong tôi?vì tôi không thể làm được. Tôi đã thử khoảng 20 sự kết hợp của các biến của tôi nhưng không có ý nghĩa gì cả, đó là lý do tại sao tôi hỏi những câu hỏi trên ... Một điều tôi đã nhấn một vài lần dường như liên quan đến thực tế là "Truy vấn của tôi" "ở trên được nhập dưới dạng" javax.jdo.Query; " –
johnvdenley
Bất cứ ai có thể giúp tôi với điều này như bây giờ của nó gây ra cho tôi một vấn đề tôi không thể workaround nữa! – johnvdenley