This commit is contained in:
VigneshViggu 2025-02-14 09:45:33 -08:00 committed by GitHub
commit 963d978b76
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -71,47 +71,43 @@ var (
prometheus.Labels{}, prometheus.Labels{},
) )
pgStatStatementsQuery = `SELECT pgStatStatementsQuery = `WITH percentiles AS (
pg_get_userbyid(userid) as user, SELECT percentile_cont(0.1) WITHIN GROUP (ORDER BY total_time) AS percentile
pg_database.datname, FROM pg_stat_statements
pg_stat_statements.queryid,
pg_stat_statements.calls as calls_total,
pg_stat_statements.total_time / 1000.0 as seconds_total,
pg_stat_statements.rows as rows_total,
pg_stat_statements.blk_read_time / 1000.0 as block_read_seconds_total,
pg_stat_statements.blk_write_time / 1000.0 as block_write_seconds_total
FROM pg_stat_statements
JOIN pg_database
ON pg_database.oid = pg_stat_statements.dbid
WHERE
total_time > (
SELECT percentile_cont(0.1)
WITHIN GROUP (ORDER BY total_time)
FROM pg_stat_statements
) )
ORDER BY seconds_total DESC SELECT DISTINCT ON (pss.queryid, pg_get_userbyid(pss.userid), pg_database.datname)
LIMIT 100;` pg_get_userbyid(pss.userid) as user,
pg_database.datname,
pss.queryid,
pss.calls as calls_total,
pss.total_time / 1000.0 as seconds_total,
pss.rows as rows_total,
pss.blk_read_time / 1000.0 as block_read_seconds_total,
pss.blk_write_time / 1000.0 as block_write_seconds_total
FROM pg_stat_statements pss
JOIN pg_database ON pg_database.oid = pss.dbid
CROSS JOIN percentiles
WHERE pss.total_time > (SELECT percentile FROM percentiles)
ORDER BY pss.queryid, pg_get_userbyid(pss.userid) DESC, pg_database.datname
LIMIT 100;`
pgStatStatementsNewQuery = `SELECT pgStatStatementsNewQuery = `SELECT DISTINCT ON (pss.queryid, pg_get_userbyid(pss.userid), pg_database.datname)
pg_get_userbyid(userid) as user, pg_get_userbyid(pss.userid) AS user,
pg_database.datname, pg_database.datname AS database_name,
pg_stat_statements.queryid, pss.queryid,
pg_stat_statements.calls as calls_total, pss.calls AS calls_total,
pg_stat_statements.total_exec_time / 1000.0 as seconds_total, pss.total_exec_time / 1000.0 AS seconds_total,
pg_stat_statements.rows as rows_total, pss.rows AS rows_total,
pg_stat_statements.blk_read_time / 1000.0 as block_read_seconds_total, pss.blk_read_time / 1000.0 AS block_read_seconds_total,
pg_stat_statements.blk_write_time / 1000.0 as block_write_seconds_total pss.blk_write_time / 1000.0 AS block_write_seconds_total
FROM pg_stat_statements FROM pg_stat_statements pss
JOIN pg_database JOIN pg_database ON pg_database.oid = pss.dbid
ON pg_database.oid = pg_stat_statements.dbid JOIN (
WHERE SELECT percentile_cont(0.1) WITHIN GROUP (ORDER BY total_exec_time) AS percentile_val
total_exec_time > ( FROM pg_stat_statements
SELECT percentile_cont(0.1) ) AS perc ON pss.total_exec_time > perc.percentile_val
WITHIN GROUP (ORDER BY total_exec_time) ORDER BY pss.queryid, pg_get_userbyid(pss.userid) DESC, pg_database.datname
FROM pg_stat_statements LIMIT 100;`
)
ORDER BY seconds_total DESC
LIMIT 100;`
) )
func (PGStatStatementsCollector) Update(ctx context.Context, instance *instance, ch chan<- prometheus.Metric) error { func (PGStatStatementsCollector) Update(ctx context.Context, instance *instance, ch chan<- prometheus.Metric) error {