Related to post:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/f3fa2b04d2fa6a3
In a test app I have created, I am able to query only 50 rows per
request (for 1 entity with 10 properties only) from the datastore by
using low-level api without getting any warnings for cpu_ms /
api_cpu_ms usage.
However if I try to query more rows (again only 1 entity being
inserted), the cpu gets used for more than 1s thereby generating a
warning or error from GAE.
Stats from GAE log:
To retrieve 50 records -> /viewData.action?offset=0&range=50 200 142ms
861cpu_ms 678api_cpu_ms (everything ok)
To retrieve 100 records -> /viewData.action?offset=0&range=100 200
261ms 1653cpu_ms 1338api_cpu_ms (cpu_ms / api_cpu_ms in red)
Is there a more performant way to query the datastore for more records
in one request? Thanks in advance.
P.S: This is a test app and billing is not enabled.
Code in servlet:
Query query = persistenceManager.newQuery("SELECT FROM " +
DetailsBean.class.getName());
query.setOrdering("crDate asc");
query.setRange(offset, range);
data = (List<DetailsBean>) query.execute();
Code of Entity bean:
package com.pojo;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.NotPersistent;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class DetailsBean implements Serializable {
private static final long serialVersionUID = 1L;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long slno;
@Persistent
private long column1;
@Persistent
private String column2;
@Persistent
private double column3;
@Persistent
private double column4;
@Persistent
private double column5;
@Persistent
private float column6;
@Persistent
private double column7;
@Persistent
private double column8;
@Persistent
private Date crDate;
@Persistent
private Date modDate;
@NotPersistent
private String message;
@NotPersistent
private int n;
@NotPersistent
private long offset;
@NotPersistent
private long range;
@NotPersistent
private List data;
public DetailsBean() {
}
public DetailsBean(long v1, String v2, double v3, double v4, double
v5,
float v6,
double v7, double v8) {
this.column1 = v1;
this.column2 = v2;
this.column3 = v3;
this.column4 = v4;
this.column5 = v5;
this.column6 = v6;
this.column7 = v7;
this.column8 = v8;
Date now = new Date();
this.crDate = now;
this.modDate = now;
}
public Long getSlno() {
return slno;
}
public void setSlno(Long slno) {
this.slno = slno;
}
public long getColumn1() {
return column1;
}
public void setColumn1(long column1) {
this.column1 = column1;
}
public String getColumn2() {
return column2;
}
public void setColumn2(String column2) {
this.column2 = column2;
}
public double getColumn3() {
return column3;
}
public void setColumn3(double column3) {
this.column3 = column3;
}
public double getColumn4() {
return column4;
}
public void setColumn4(double column4) {
this.column4 = column4;
}
public double getColumn5() {
return column5;
}
public void setColumn5(double column5) {
this.column5 = column5;
}
public float getColumn6() {
return column6;
}
public void setColumn6(float column6) {
this.column6 = column6;
}
public double getColumn7() {
return column7;
}
public void setColumn7(double column7) {
this.column7 = column7;
}
public double getColumn8() {
return column8;
}
public void setColumn8(double column8) {
this.column8 = column8;
}
public Date getCrDate() {
return crDate;
}
public void setCrDate(Date crDate) {
this.crDate = crDate;
}
public Date getModDate() {
return modDate;
}
public void setModDate(Date modDate) {
this.modDate = modDate;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getN() {
return n;
}
public void setN(int n) {
this.n = n;
}
public long getOffset() {
return offset;
}
public void setOffset(long offset) {
this.offset = offset;
}
public long getRange() {
return range;
}
public void setRange(long range) {
this.range = range;
}
public List getData() {
return data;
}
public void setData(List data) {
this.data = data;
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---