io.ebeaninternal.server.autotune.AutoTuneService Maven / Gradle / Ivy
package io.ebeaninternal.server.autotune;
import io.ebean.AutoTune;
import io.ebeaninternal.api.SpiQuery;
/**
* Collects and manages the the profile information.
*
* The profile information is periodically converted into "tuned query details" -
* which is used to automatically tune the queries that use AutoTune.
*
*
* The "tuned query details" effectively are part of the query that has the
* select() and join() information (but not the where clause, order by, limits
* etc). These are applied to the query when tuneQuery() is called.
*
*/
public interface AutoTuneService extends AutoTune {
/**
* Load the query tuning information.
*/
void startup();
/**
* Called when a query thinks it should be automatically tuned by AutoTune.
*
* Returns true if the query was tuned.
*
*/
boolean tuneQuery(SpiQuery> query);
/**
* Fire a garbage collection (hint to the JVM). Assuming garbage collection
* fires this will gather the usage profiling information.
*/
@Override
void collectProfiling();
/**
* On shutdown fire garbage collection and collect statistics. Note that
* usually we add a little delay (100 milliseconds) to give the garbage
* collector plenty of time to do its thing and collect the profile
* information.
*/
void shutdown();
}