[ https://issues.apache.org/jira/browse/IGNITE-3443?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexey Kuznetsov updated IGNITE-3443: ------------------------------------- Fix Version/s: 1.8 > 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)