@@ -42,7 +42,10 @@ const perfEventsStatementsQuery = `
4242 SUM_CREATED_TMP_TABLES,
4343 SUM_SORT_MERGE_PASSES,
4444 SUM_SORT_ROWS,
45- SUM_NO_INDEX_USED
45+ SUM_NO_INDEX_USED,
46+ QUANTILE_95,
47+ QUANTILE_99,
48+ QUANTILE_999
4649 FROM (
4750 SELECT *
4851 FROM performance_schema.events_statements_summary_by_digest
@@ -67,7 +70,10 @@ const perfEventsStatementsQuery = `
6770 Q.SUM_CREATED_TMP_TABLES,
6871 Q.SUM_SORT_MERGE_PASSES,
6972 Q.SUM_SORT_ROWS,
70- Q.SUM_NO_INDEX_USED
73+ Q.SUM_NO_INDEX_USED,
74+ Q.QUANTILE_95,
75+ Q.QUANTILE_99,
76+ Q.QUANTILE_999
7177 ORDER BY SUM_TIMER_WAIT DESC
7278 LIMIT %d
7379 `
@@ -144,6 +150,11 @@ var (
144150 "The total number of statements that used full table scans by digest." ,
145151 []string {"schema" , "digest" , "digest_text" }, nil ,
146152 )
153+ performanceSchemaEventsStatementsLatency = prometheus .NewDesc (
154+ prometheus .BuildFQName (namespace , performanceSchema , "events_statements_latency" ),
155+ "A summary of statement latency by digest" ,
156+ []string {"schema" , "digest" , "digest_text" }, nil ,
157+ )
147158)
148159
149160// ScrapePerfEventsStatements collects from `performance_schema.events_statements_summary_by_digest`.
@@ -208,10 +219,11 @@ func (c ScrapePerfEventsStatements) Scrape(ctx context.Context, instance *instan
208219 tmpTables , tmpDiskTables uint64
209220 sortMergePasses , sortRows uint64
210221 noIndexUsed uint64
222+ quantile95 , quantile99 , quantile999 uint64
211223 )
212224 for perfSchemaEventsStatementsRows .Next () {
213225 if err := perfSchemaEventsStatementsRows .Scan (
214- & schemaName , & digest , & digestText , & count , & queryTime , & lockTime , & cpuTime , & errors , & warnings , & rowsAffected , & rowsSent , & rowsExamined , & tmpDiskTables , & tmpTables , & sortMergePasses , & sortRows , & noIndexUsed ,
226+ & schemaName , & digest , & digestText , & count , & queryTime , & lockTime , & cpuTime , & errors , & warnings , & rowsAffected , & rowsSent , & rowsExamined , & tmpDiskTables , & tmpTables , & sortMergePasses , & sortRows , & noIndexUsed , & quantile95 , & quantile99 , & quantile999 ,
215227 ); err != nil {
216228 return err
217229 }
@@ -271,6 +283,11 @@ func (c ScrapePerfEventsStatements) Scrape(ctx context.Context, instance *instan
271283 performanceSchemaEventsStatementsNoIndexUsedDesc , prometheus .CounterValue , float64 (noIndexUsed ),
272284 schemaName , digest , digestText ,
273285 )
286+ ch <- prometheus .MustNewConstSummary (performanceSchemaEventsStatementsLatency , count , float64 (queryTime )/ picoSeconds , map [float64 ]float64 {
287+ 95 : float64 (quantile95 ) / picoSeconds ,
288+ 99 : float64 (quantile99 ) / picoSeconds ,
289+ 999 : float64 (quantile999 ) / picoSeconds ,
290+ }, schemaName , digest , digestText )
274291 }
275292 return nil
276293}
0 commit comments