[
https://issues.apache.org/jira/browse/IGNITE-3443?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexey Kuznetsov updated IGNITE-3443:
-------------------------------------
Description:
We could collect last 1000 (maybe configurable) sql statements with per
statement statistics: count, min time, max time, avg time,....
May be execution plan (explain) ?
-------------------
Proposed API changes:
So, I introduced interface org.apache.ignite.cache.query.QueryDetailsMetrics
with metrics:
{code}
/**
* Query metrics aggregated by query type and its textual representation.
*/
public interface QueryDetailsMetrics {
/**
* @return Query type.
*/
public String getQueryType();
/**
* @return Textual representation of query.
*/
public String getQuery();
/**
* @return Cache where query was executed.
*/
public String getCache();
/**
* Gets total number execution of query.
*
* @return Number of executions.
*/
public int getExecutions();
/**
* Gets number of completed execution of query.
*
* @return Number of completed executions.
*/
public int getCompletions();
/**
* Gets number of times a query execution failed.
*
* @return Number of times a query execution failed.
*/
public int getFailures();
/**
* Gets minimum execution time of query.
*
* @return Minimum execution time of query.
*/
public long getMinimumTime();
/**
* Gets maximum execution time of query.
*
* @return Maximum execution time of query.
*/
public long getMaximumTime();
/**
* Gets average execution time of query.
*
* @return Average execution time of query.
*/
public double getAverageTime();
/**
* Gets total time of all query executions.
*
* @return Total time of all query executions.
*/
public long getTotalTime();
/**
* Gets latest query start time.
*
* @return Latest time query was stared.
*/
public long getLastStartTime();
}
{code}
And added method on org.apache.ignite.IgniteCache:
{code}
/**
* Gets query metrics details.
*
* @return Metrics.
*/
public Collection<? extends QueryDetailsMetrics> queryMetricsHistory();
{code}
And also I added new property on
org.apache.ignite.configuration.CacheConfiguration:
{code}
/**
* Gets size of queries metrics history that will be stored in memory for
monitoring purposes.
* If {@code 0} then history will not be collected.
* Note, Larger number may lead to higher memory consumption.
*
* @return Maximum number of query metrics that will be stored in memory.
*/
public int getQueryMetricsHistorySize() {
return qryMetricsHistSz;
}
/**
* Sets size of queries metrics history that will be stored in memory for
monitoring purposes.
*
* @param qryMetricsHistSz Maximum number of latest queries metrics that will
be stored in memory.
* @return {@code this} for chaining.
*/
public CacheConfiguration<K, V> setQueryMetricsHistorySize(int
qryMetricsHistSz) {
this.qryMetricsHistSz = qryMetricsHistSz;
return this;
}
{code}
was:
We could collect last 1000 (maybe configurable) sql statements with per
statement statistics: count, min time, max time, avg time,....
May be execution plan (explain) ?
And I would like that my changes of public API looks good.
So, I introduced interface org.apache.ignite.cache.query.QueryDetailsMetrics
with metrics:
{code}
/**
* Query metrics aggregated by query type and its textual representation.
*/
public interface QueryDetailsMetrics {
/**
* @return Query type.
*/
public String getQueryType();
/**
* @return Textual representation of query.
*/
public String getQuery();
/**
* @return Cache where query was executed.
*/
public String getCache();
/**
* Gets total number execution of query.
*
* @return Number of executions.
*/
public int getExecutions();
/**
* Gets number of completed execution of query.
*
* @return Number of completed executions.
*/
public int getCompletions();
/**
* Gets number of times a query execution failed.
*
* @return Number of times a query execution failed.
*/
public int getFailures();
/**
* Gets minimum execution time of query.
*
* @return Minimum execution time of query.
*/
public long getMinimumTime();
/**
* Gets maximum execution time of query.
*
* @return Maximum execution time of query.
*/
public long getMaximumTime();
/**
* Gets average execution time of query.
*
* @return Average execution time of query.
*/
public double getAverageTime();
/**
* Gets total time of all query executions.
*
* @return Total time of all query executions.
*/
public long getTotalTime();
/**
* Gets latest query start time.
*
* @return Latest time query was stared.
*/
public long getLastStartTime();
}
{code}
And added method on org.apache.ignite.IgniteCache:
{code}
/**
* Gets query metrics details.
*
* @return Metrics.
*/
public Collection<? extends QueryDetailsMetrics> queryMetricsHistory();
{code}
And also I added new property on
org.apache.ignite.configuration.CacheConfiguration:
{code}
/**
* Gets size of queries metrics history that will be stored in memory for
monitoring purposes.
* If {@code 0} then history will not be collected.
* Note, Larger number may lead to higher memory consumption.
*
* @return Maximum number of query metrics that will be stored in memory.
*/
public int getQueryMetricsHistorySize() {
return qryMetricsHistSz;
}
/**
* Sets size of queries metrics history that will be stored in memory for
monitoring purposes.
*
* @param qryMetricsHistSz Maximum number of latest queries metrics that will
be stored in memory.
* @return {@code this} for chaining.
*/
public CacheConfiguration<K, V> setQueryMetricsHistorySize(int
qryMetricsHistSz) {
this.qryMetricsHistSz = qryMetricsHistSz;
return this;
}
{code}
> Implement collecting what SQL statements executed on cluster and their
> metrics.
> -------------------------------------------------------------------------------
>
> Key: IGNITE-3443
> URL: https://issues.apache.org/jira/browse/IGNITE-3443
> Project: Ignite
> Issue Type: Task
> Components: SQL
> Reporter: Alexey Kuznetsov
> Assignee: Alexey Kuznetsov
> Fix For: 1.8
>
>
> We could collect last 1000 (maybe configurable) sql statements with per
> statement statistics: count, min time, max time, avg time,....
> May be execution plan (explain) ?
> -------------------
> Proposed API changes:
> So, I introduced interface org.apache.ignite.cache.query.QueryDetailsMetrics
> with metrics:
> {code}
> /**
> * Query metrics aggregated by query type and its textual representation.
> */
> public interface QueryDetailsMetrics {
> /**
> * @return Query type.
> */
> public String getQueryType();
> /**
> * @return Textual representation of query.
> */
> public String getQuery();
> /**
> * @return Cache where query was executed.
> */
> public String getCache();
> /**
> * Gets total number execution of query.
> *
> * @return Number of executions.
> */
> public int getExecutions();
> /**
> * Gets number of completed execution of query.
> *
> * @return Number of completed executions.
> */
> public int getCompletions();
> /**
> * Gets number of times a query execution failed.
> *
> * @return Number of times a query execution failed.
> */
> public int getFailures();
> /**
> * Gets minimum execution time of query.
> *
> * @return Minimum execution time of query.
> */
> public long getMinimumTime();
> /**
> * Gets maximum execution time of query.
> *
> * @return Maximum execution time of query.
> */
> public long getMaximumTime();
> /**
> * Gets average execution time of query.
> *
> * @return Average execution time of query.
> */
> public double getAverageTime();
> /**
> * Gets total time of all query executions.
> *
> * @return Total time of all query executions.
> */
> public long getTotalTime();
> /**
> * Gets latest query start time.
> *
> * @return Latest time query was stared.
> */
> public long getLastStartTime();
> }
> {code}
> And added method on org.apache.ignite.IgniteCache:
> {code}
> /**
> * Gets query metrics details.
> *
> * @return Metrics.
> */
> public Collection<? extends QueryDetailsMetrics> queryMetricsHistory();
> {code}
> And also I added new property on
> org.apache.ignite.configuration.CacheConfiguration:
> {code}
> /**
> * Gets size of queries metrics history that will be stored in memory for
> monitoring purposes.
> * If {@code 0} then history will not be collected.
> * Note, Larger number may lead to higher memory consumption.
> *
> * @return Maximum number of query metrics that will be stored in memory.
> */
> public int getQueryMetricsHistorySize() {
> return qryMetricsHistSz;
> }
> /**
> * Sets size of queries metrics history that will be stored in memory for
> monitoring purposes.
> *
> * @param qryMetricsHistSz Maximum number of latest queries metrics that will
> be stored in memory.
> * @return {@code this} for chaining.
> */
> public CacheConfiguration<K, V> setQueryMetricsHistorySize(int
> qryMetricsHistSz) {
> this.qryMetricsHistSz = qryMetricsHistSz;
> return this;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)