Skip to content

Commit 2214bad

Browse files
authored
[*] fix column names in Query Performance Analysis dashboard (#1041)
1 parent 14e98b5 commit 2214bad

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

grafana/postgres/v12/3-query-performance-analysis.json

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
{
108108
"matcher": {
109109
"id": "byName",
110-
"options": "Total Runtime (ms)"
110+
"options": "Total Runtime"
111111
},
112112
"properties": [
113113
{
@@ -123,7 +123,7 @@
123123
{
124124
"matcher": {
125125
"id": "byName",
126-
"options": "Avg Runtime (ms)"
126+
"options": "Avg Runtime"
127127
},
128128
"properties": [
129129
{
@@ -139,7 +139,7 @@
139139
{
140140
"matcher": {
141141
"id": "byName",
142-
"options": "Plan Time (ms)"
142+
"options": "Plan Time"
143143
},
144144
"properties": [
145145
{
@@ -155,7 +155,7 @@
155155
{
156156
"matcher": {
157157
"id": "byName",
158-
"options": "Avg Plan Time (ms)"
158+
"options": "Avg Plan Time"
159159
},
160160
"properties": [
161161
{
@@ -164,7 +164,7 @@
164164
},
165165
{
166166
"id": "decimals",
167-
"value": 2
167+
"value": 1
168168
}
169169
]
170170
},
@@ -231,7 +231,7 @@
231231
{
232232
"matcher": {
233233
"id": "byName",
234-
"options": "Shared Hit (MB)"
234+
"options": "Shared Hit"
235235
},
236236
"properties": [
237237
{
@@ -247,7 +247,7 @@
247247
{
248248
"matcher": {
249249
"id": "byName",
250-
"options": "Shared Read (MB)"
250+
"options": "Shared Read"
251251
},
252252
"properties": [
253253
{
@@ -263,7 +263,7 @@
263263
{
264264
"matcher": {
265265
"id": "byName",
266-
"options": "Shared Written (MB)"
266+
"options": "Shared Written"
267267
},
268268
"properties": [
269269
{
@@ -279,7 +279,7 @@
279279
{
280280
"matcher": {
281281
"id": "byName",
282-
"options": "Temp Read (MB)"
282+
"options": "Temp Read"
283283
},
284284
"properties": [
285285
{
@@ -295,7 +295,7 @@
295295
{
296296
"matcher": {
297297
"id": "byName",
298-
"options": "Temp Written (MB)"
298+
"options": "Temp Written"
299299
},
300300
"properties": [
301301
{
@@ -311,7 +311,7 @@
311311
{
312312
"matcher": {
313313
"id": "byName",
314-
"options": "IO Time (ms)"
314+
"options": "IO Time"
315315
},
316316
"properties": [
317317
{
@@ -383,7 +383,7 @@
383383
},
384384
"format": "table",
385385
"rawQuery": true,
386-
"rawSql": "-- Enhanced comprehensive query analysis (Fast mode)\nWITH query_stats AS (\n select\n tag_data->>'queryid' as queryid,\n max((data->>'total_time')::numeric) - min((data->>'total_time')::numeric) as total_runtime,\n (max((data->>'total_time')::numeric) - min((data->>'total_time')::numeric)) / nullif(max((data->>'calls')::int8) - min((data->>'calls')::int8), 0) as avg_runtime,\n max((data->>'total_plan_time')::numeric) - min((data->>'total_plan_time')::numeric) as plan_time,\n (max((data->>'total_plan_time')::numeric) - min((data->>'total_plan_time')::numeric)) / nullif(max((data->>'calls')::int8) - min((data->>'calls')::int8), 0) as avg_plan_time,\n max((data->>'calls')::int8) - min((data->>'calls')::int8) as calls,\n max((data->>'rows')::int8) - min((data->>'rows')::int8) as rows,\n (max((data->>'rows')::int8) - min((data->>'rows')::int8))::numeric / nullif(max((data->>'calls')::int8) - min((data->>'calls')::int8), 0) as avg_rows,\n (max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8)) * 8192 / 1024.0 / 1024.0 as shared_hit_mb,\n (max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as shared_read_mb,\n (max((data->>'shared_blks_written')::int8) - min((data->>'shared_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 as shared_written_mb,\n (max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as temp_read_mb,\n (max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 as temp_written_mb,\n (max((data->>'blk_read_time')::numeric) - min((data->>'blk_read_time')::numeric)) + \n (max((data->>'blk_write_time')::numeric) - min((data->>'blk_write_time')::numeric)) as io_time,\n case when length(tag_data->>'query') > 150 then (tag_data->>'query')::varchar(150) || '...' else tag_data->>'query' end as query\n from stat_statements\n where dbname = '$dbname'\n and $__timeFilter(time)\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid', tag_data->>'query'\n having max((data->>'calls')::int8) - min((data->>'calls')::int8) > 0\n),\nwith_percentages AS (\n select \n *,\n 100 * total_runtime / nullif((select sum(total_runtime) from query_stats), 0) as pct_db_total\n from query_stats\n)\nselect\n queryid,\n total_runtime::int8 as \"Total Runtime (ms)\",\n avg_runtime::numeric(10,2) as \"Avg Runtime (ms)\",\n plan_time::int8 as \"Plan Time (ms)\",\n avg_plan_time::numeric(10,2) as \"Avg Plan Time (ms)\",\n calls as \"Calls\",\n rows as \"Rows\",\n avg_rows::numeric(10,1) as \"Avg Rows\",\n shared_hit_mb::numeric(10,1) as \"Shared Hit (MB)\",\n shared_read_mb::numeric(10,1) as \"Shared Read (MB)\",\n shared_written_mb::numeric(10,1) as \"Shared Written (MB)\",\n temp_read_mb::numeric(10,1) as \"Temp Read (MB)\",\n temp_written_mb::numeric(10,1) as \"Temp Written (MB)\",\n io_time::numeric(10,1) as \"IO Time (ms)\",\n pct_db_total::numeric(5,1) as \"% DB Total\",\n (select data->>'users' from stat_statements where $__timeFilter(time) and dbname = '$dbname' and tag_data->>'queryid' = with_percentages.queryid order by time desc limit 1) as \"Users\",\n query as \"Query\"\nfrom with_percentages\norder by total_runtime desc nulls last\nlimit $top",
386+
"rawSql": "-- Enhanced comprehensive query analysis (Fast mode)\nWITH query_stats AS (\n select\n tag_data->>'queryid' as queryid,\n max((data->>'total_time')::numeric) - min((data->>'total_time')::numeric) as total_runtime,\n (max((data->>'total_time')::numeric) - min((data->>'total_time')::numeric)) / nullif(max((data->>'calls')::int8) - min((data->>'calls')::int8), 0) as avg_runtime,\n max((data->>'total_plan_time')::numeric) - min((data->>'total_plan_time')::numeric) as plan_time,\n (max((data->>'total_plan_time')::numeric) - min((data->>'total_plan_time')::numeric)) / nullif(max((data->>'calls')::int8) - min((data->>'calls')::int8), 0) as avg_plan_time,\n max((data->>'calls')::int8) - min((data->>'calls')::int8) as calls,\n max((data->>'rows')::int8) - min((data->>'rows')::int8) as rows,\n (max((data->>'rows')::int8) - min((data->>'rows')::int8))::numeric / nullif(max((data->>'calls')::int8) - min((data->>'calls')::int8), 0) as avg_rows,\n (max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8)) * 8192 / 1024.0 / 1024.0 as shared_hit_mb,\n (max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as shared_read_mb,\n (max((data->>'shared_blks_written')::int8) - min((data->>'shared_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 as shared_written_mb,\n (max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as temp_read_mb,\n (max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 as temp_written_mb,\n (max((data->>'blk_read_time')::numeric) - min((data->>'blk_read_time')::numeric)) + \n (max((data->>'blk_write_time')::numeric) - min((data->>'blk_write_time')::numeric)) as io_time,\n case when length(tag_data->>'query') > 150 then (tag_data->>'query')::varchar(150) || '...' else tag_data->>'query' end as query\n from stat_statements\n where dbname = '$dbname'\n and $__timeFilter(time)\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid', tag_data->>'query'\n having max((data->>'calls')::int8) - min((data->>'calls')::int8) > 0\n),\nwith_percentages AS (\n select \n *,\n 100 * total_runtime / nullif((select sum(total_runtime) from query_stats), 0) as pct_db_total\n from query_stats\n)\nselect\n queryid,\n total_runtime::int8 as \"Total Runtime\",\n avg_runtime::numeric(10,2) as \"Avg Runtime\",\n plan_time::int8 as \"Plan Time\",\n avg_plan_time::numeric(10,2) as \"Avg Plan Time\",\n calls as \"Calls\",\n rows as \"Rows\",\n avg_rows::numeric(10,1) as \"Avg Rows\",\n shared_hit_mb::numeric(10,1) as \"Shared Hit\",\n shared_read_mb::numeric(10,1) as \"Shared Read\",\n shared_written_mb::numeric(10,1) as \"Shared Written\",\n temp_read_mb::numeric(10,1) as \"Temp Read\",\n temp_written_mb::numeric(10,1) as \"Temp Written\",\n io_time::numeric(10,1) as \"IO Time\",\n pct_db_total::numeric(5,1) as \"% DB Total\",\n (select data->>'users' from stat_statements where $__timeFilter(time) and dbname = '$dbname' and tag_data->>'queryid' = with_percentages.queryid order by time desc limit 1) as \"Users\",\n query as \"Query\"\nfrom with_percentages\norder by total_runtime desc nulls last\nlimit $top",
387387
"refId": "A"
388388
}
389389
],
@@ -800,11 +800,11 @@
800800
},
801801
"format": "time_series",
802802
"rawQuery": true,
803-
"rawSql": "-- Top queries by shared blocks hit over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8)) * 8192 / 1024.0 / 1024.0 as shared_hit_mb,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8) > 0\n order by (max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
803+
"rawSql": "-- Top queries by shared blocks hit over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8)) * 8192 / 1024.0 / 1024.0 as shared_blks_hit,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8) > 0\n order by (max((data->>'shared_blks_hit')::int8) - min((data->>'shared_blks_hit')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
804804
"refId": "A"
805805
}
806806
],
807-
"title": "Top $top statements by shared_blks_hit (in MB)",
807+
"title": "Top $top statements by shared_blks_hit",
808808
"type": "timeseries"
809809
},
810810
{
@@ -902,11 +902,11 @@
902902
},
903903
"format": "time_series",
904904
"rawQuery": true,
905-
"rawSql": "-- Top queries by shared blocks read over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as shared_read_mb,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8) > 0\n order by (max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
905+
"rawSql": "-- Top queries by shared blocks read over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as shared_blks_read,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8) > 0\n order by (max((data->>'shared_blks_read')::int8) - min((data->>'shared_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
906906
"refId": "A"
907907
}
908908
],
909-
"title": "Top $top statements by shared_blks_read (in MB)",
909+
"title": "Top $top statements by shared_blks_read",
910910
"type": "timeseries"
911911
},
912912
{
@@ -1000,13 +1000,14 @@
10001000
"type": "grafana-postgresql-datasource",
10011001
"uid": "pgwatch-metrics"
10021002
},
1003+
"editorMode": "code",
10031004
"format": "time_series",
10041005
"rawQuery": true,
1005-
"rawSql": "-- Top queries by temp blocks read over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as temp_read_mb,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8) > 0\n order by (max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
1006+
"rawSql": "-- Top queries by temp blocks read over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 as temp_blks_read,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8) > 0\n order by (max((data->>'temp_blks_read')::int8) - min((data->>'temp_blks_read')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
10061007
"refId": "A"
10071008
}
10081009
],
1009-
"title": "Top $top statements by temp bytes read (in MB)",
1010+
"title": "Top $top statements by temp bytes read",
10101011
"type": "timeseries"
10111012
},
10121013
{
@@ -1104,11 +1105,11 @@
11041105
},
11051106
"format": "time_series",
11061107
"rawQuery": true,
1107-
"rawSql": "-- Top queries by temp blocks written over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 as temp_written_mb,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8) > 0\n order by (max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
1108+
"rawSql": "-- Top queries by temp blocks written over time\nSELECT\n $__timeGroup(time, $agg_interval),\n (max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 as temp_blks_written,\n tag_data->>'queryid' as queryid\nFROM\n stat_statements\nWHERE\n $__timeFilter(time)\n AND dbname = '$dbname'\n AND tag_data->>'query' ~* '$query_filter_regex'\n AND tag_data->>'queryid' IN (\n select tag_data->>'queryid'\n from stat_statements\n where $__timeFilter(time) and dbname = '$dbname'\n and tag_data->>'query' ~* '$query_filter_regex'\n group by tag_data->>'queryid'\n having max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8) > 0\n order by (max((data->>'temp_blks_written')::int8) - min((data->>'temp_blks_written')::int8)) * 8192 / 1024.0 / 1024.0 desc\n limit $top\n )\nGROUP BY 1, 3\nORDER BY 1",
11081109
"refId": "A"
11091110
}
11101111
],
1111-
"title": "Top $top statements by temp bytes written (in MB)",
1112+
"title": "Top $top statements by temp bytes written",
11121113
"type": "timeseries"
11131114
},
11141115
{
@@ -1314,5 +1315,5 @@
13141315
"timezone": "browser",
13151316
"title": "3. Query Performance Analysis",
13161317
"uid": "query-performance-analysis",
1317-
"version": 49
1318+
"version": 49
13181319
}

0 commit comments

Comments
 (0)