All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avaje.ebean.meta.MetaQueryStatistic Maven / Gradle / Ivy

The newest version!
package com.avaje.ebean.meta;

import java.io.Serializable;

import javax.persistence.Entity;

/**
 * Query execution statistics Meta data.
 */
@Entity
public class MetaQueryStatistic implements Serializable {

  private static final long serialVersionUID = -8746524372894472583L;

  boolean autofetchTuned;

  String beanType;

  /**
   * The original query plan hash (calculated prior to autofetch tuning).
   */
  int origQueryPlanHash;

  /**
   * The final query plan hash (calculated after to autofetch tuning).
   */
  int finalQueryPlanHash;

  String sql;

  int executionCount;

  int totalLoadedBeans;

  int totalTimeMicros;

  long collectionStart;

  long lastQueryTime;

  int avgTimeMicros;

  int avgLoadedBeans;

  public MetaQueryStatistic() {

  }

  /**
   * Create a MetaQueryStatistic.
   */
  public MetaQueryStatistic(boolean autofetchTuned, String beanType, int plan, String sql,
      int executionCount, int totalLoadedBeans, int totalTimeMicros, long collectionStart,
      long lastQueryTime) {

    this.autofetchTuned = autofetchTuned;
    this.beanType = beanType;
    this.finalQueryPlanHash = plan;
    this.sql = sql;
    this.executionCount = executionCount;
    this.totalLoadedBeans = totalLoadedBeans;
    this.totalTimeMicros = totalTimeMicros;
    this.collectionStart = collectionStart;

    this.lastQueryTime = lastQueryTime;
    this.avgTimeMicros = executionCount == 0 ? 0 : totalTimeMicros / executionCount;
    this.avgLoadedBeans = executionCount == 0 ? 0 : totalLoadedBeans / executionCount;
  }

  public String toString() {
    return "type=" + beanType + " tuned:" + autofetchTuned + " origHash=" + origQueryPlanHash
        + " count=" + executionCount + " avgMicros=" + getAvgTimeMicros();
  }

  /**
   * Return true if this query plan was built for Autofetch tuned queries.
   */
  public boolean isAutofetchTuned() {
    return autofetchTuned;
  }

  /**
   * Return the original query plan hash (calculated prior to autofetch tuning).
   * 

* This will return 0 if there is no autofetch profiling or tuning on this * query. *

*/ public int getOrigQueryPlanHash() { return origQueryPlanHash; } /** * Return the queryPlanHash value. This is unique for a given query plan. */ public int getFinalQueryPlanHash() { return finalQueryPlanHash; } /** * Return the bean type. */ public String getBeanType() { return beanType; } /** * Return the sql executed. */ public String getSql() { return sql; } /** * Return the total number of queries executed. */ public int getExecutionCount() { return executionCount; } /** * Return the total number of beans loaded by the queries. *

* This excludes background fetching. *

*/ public int getTotalLoadedBeans() { return totalLoadedBeans; } /** * Return the number of times this query was executed. */ public int getTotalTimeMicros() { return totalTimeMicros; } /** * Return the time collection started. */ public long getCollectionStart() { return collectionStart; } /** * Return the time of the last query executed using this plan. */ public long getLastQueryTime() { return lastQueryTime; } /** * Return the average query execution time in microseconds. *

* This excludes background fetching. *

*/ public int getAvgTimeMicros() { return avgTimeMicros; } /** * Return the average number of bean loaded per query. *

* This excludes background fetching. *

*/ public int getAvgLoadedBeans() { return avgLoadedBeans; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy