@@ -42,7 +42,10 @@ const perfEventsStatementsQuery = `
42
42
SUM_CREATED_TMP_TABLES,
43
43
SUM_SORT_MERGE_PASSES,
44
44
SUM_SORT_ROWS,
45
- SUM_NO_INDEX_USED
45
+ SUM_NO_INDEX_USED,
46
+ QUANTILE_95,
47
+ QUANTILE_99,
48
+ QUANTILE_999
46
49
FROM (
47
50
SELECT *
48
51
FROM performance_schema.events_statements_summary_by_digest
@@ -67,7 +70,10 @@ const perfEventsStatementsQuery = `
67
70
Q.SUM_CREATED_TMP_TABLES,
68
71
Q.SUM_SORT_MERGE_PASSES,
69
72
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
71
77
ORDER BY SUM_TIMER_WAIT DESC
72
78
LIMIT %d
73
79
`
@@ -160,6 +166,11 @@ var (
160
166
"The total number of statements that used full table scans by digest." ,
161
167
[]string {"schema" , "digest" , "digest_text" }, nil ,
162
168
)
169
+ performanceSchemaEventsStatementsLatency = prometheus .NewDesc (
170
+ prometheus .BuildFQName (namespace , performanceSchema , "events_statements_latency" ),
171
+ "A summary of statement latency by digest" ,
172
+ []string {"schema" , "digest" , "digest_text" }, nil ,
173
+ )
163
174
)
164
175
165
176
// ScrapePerfEventsStatements collects from `performance_schema.events_statements_summary_by_digest`.
@@ -204,10 +215,11 @@ func (ScrapePerfEventsStatements) Scrape(ctx context.Context, instance *instance
204
215
tmpTables , tmpDiskTables uint64
205
216
sortMergePasses , sortRows uint64
206
217
noIndexUsed uint64
218
+ quantile95 , quantile99 , quantile999 uint64
207
219
)
208
220
for perfSchemaEventsStatementsRows .Next () {
209
221
if err := perfSchemaEventsStatementsRows .Scan (
210
- & schemaName , & digest , & digestText , & count , & queryTime , & lockTime , & cpuTime , & errors , & warnings , & rowsAffected , & rowsSent , & rowsExamined , & tmpDiskTables , & tmpTables , & sortMergePasses , & sortRows , & noIndexUsed ,
222
+ & schemaName , & digest , & digestText , & count , & queryTime , & lockTime , & cpuTime , & errors , & warnings , & rowsAffected , & rowsSent , & rowsExamined , & tmpDiskTables , & tmpTables , & sortMergePasses , & sortRows , & noIndexUsed , & quantile95 , & quantile99 , & quantile999 ,
211
223
); err != nil {
212
224
return err
213
225
}
@@ -267,6 +279,11 @@ func (ScrapePerfEventsStatements) Scrape(ctx context.Context, instance *instance
267
279
performanceSchemaEventsStatementsNoIndexUsedDesc , prometheus .CounterValue , float64 (noIndexUsed ),
268
280
schemaName , digest , digestText ,
269
281
)
282
+ ch <- prometheus .MustNewConstSummary (performanceSchemaEventsStatementsLatency , count , float64 (queryTime )/ picoSeconds , map [float64 ]float64 {
283
+ 95 : float64 (quantile95 ) / picoSeconds ,
284
+ 99 : float64 (quantile99 ) / picoSeconds ,
285
+ 999 : float64 (quantile999 ) / picoSeconds ,
286
+ }, schemaName , digest , digestText )
270
287
}
271
288
return nil
272
289
}
0 commit comments