mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
80 lines
2.1 KiB
Java
80 lines
2.1 KiB
Java
package io.ebeaninternal.api;
|
|
|
|
import io.ebean.meta.MetricVisitor;
|
|
import io.ebean.metric.CountMetric;
|
|
import io.ebean.metric.MetricFactory;
|
|
import io.ebean.metric.TimedMetric;
|
|
|
|
/**
|
|
* Extra metrics collected to measure internal behaviour.
|
|
*/
|
|
public class ExtraMetrics {
|
|
|
|
private final TimedMetric bindCapture;
|
|
private final TimedMetric planCollect;
|
|
private final CountMetric loadOneL2;
|
|
private final CountMetric loadOneRef;
|
|
private final CountMetric loadOneNoLoader;
|
|
|
|
/**
|
|
* Create the extra metrics.
|
|
*/
|
|
public ExtraMetrics() {
|
|
final MetricFactory factory = MetricFactory.get();
|
|
this.bindCapture = factory.createTimedMetric("ebean.queryplan.bindcapture");
|
|
this.planCollect = factory.createTimedMetric("ebean.queryplan.collect");
|
|
this.loadOneL2 = factory.createCountMetric("loadone.l2");
|
|
this.loadOneRef = factory.createCountMetric("loadone.ref");
|
|
this.loadOneNoLoader = factory.createCountMetric("loadone.noloader");
|
|
}
|
|
|
|
/**
|
|
* Timed metric for bind capture used with query plan collection.
|
|
*/
|
|
public TimedMetric getBindCapture() {
|
|
return bindCapture;
|
|
}
|
|
|
|
/**
|
|
* Timed metric for query plan collection.
|
|
*/
|
|
public TimedMetric getPlanCollect() {
|
|
return planCollect;
|
|
}
|
|
|
|
/**
|
|
* Increment counter for lazy loading one bean from L2 cache.
|
|
* All good when lazy loading also hits L2 cache.
|
|
*/
|
|
public void incrementLoadOneL2() {
|
|
loadOneL2.increment();
|
|
}
|
|
|
|
/**
|
|
* Increment counter for lazy loading on reference bean.
|
|
* We ought to be able to avoid this by changing to a tuned query.
|
|
*/
|
|
public void incrementLoadOneRef() {
|
|
loadOneRef.increment();
|
|
}
|
|
|
|
/**
|
|
* Increment counter for lazy loading one bean due to no loader.
|
|
* Likely due to multiple stateless updates or serialisation.
|
|
*/
|
|
public void incrementLoadOneNoLoader() {
|
|
loadOneNoLoader.increment();
|
|
}
|
|
|
|
/**
|
|
* Collect the metrics.
|
|
*/
|
|
public void visitMetrics(MetricVisitor visitor) {
|
|
bindCapture.visit(visitor);
|
|
planCollect.visit(visitor);
|
|
loadOneL2.visit(visitor);
|
|
loadOneRef.visit(visitor);
|
|
loadOneNoLoader.visit(visitor);
|
|
}
|
|
}
|