Devops's Blog

Выводим медленные запросы из базы

База Postgresql

Берем запрос select который отображает медленные запросы для базы wert (статусы active,idle) , запрос оборачиваем в функцию , а функцию во view

					    
#get_pg_stats_1;
drop view v_get_pg_stats_1
DROP FUNCTION get_pg_stats_1();
CREATE FUNCTION get_pg_stats_1() RETURNS table (state_change timestamp with time zone,runtime text,state text,query text) AS $$ SELECT state_change,to_char(current_timestamp - state_change, 'SSSS.MS') AS runtime,state,query FROM pg_stat_activity where state_change < current_timestamp - INTERVAL '10' SECOND and datname='wert' and pid <> pg_backend_pid() and state='active' ORDER BY state_change;; $$ LANGUAGE SQL SECURITY DEFINER;
CREATE VIEW v_get_pg_stats_1 AS SELECT * FROM get_pg_stats_1();
GRANT SELECT ON v_get_pg_stats_1 TO user_db;

#get_pg_stats_2;
drop view v_get_pg_stats_2
DROP FUNCTION get_pg_stats_2();
CREATE FUNCTION get_pg_stats_2() RETURNS table (state_change timestamp with time zone,runtime text,state text,query text) AS $$ SELECT state_change,to_char(current_timestamp - state_change, 'SSSS.MS') AS runtime,state,query FROM pg_stat_activity where state_change < current_timestamp - INTERVAL '10' SECOND and datname='wert' and pid <> pg_backend_pid() and state like '%idle%' ORDER BY state_change;; $$ LANGUAGE SQL SECURITY DEFINER;
CREATE VIEW v_get_pg_stats_2 AS SELECT * FROM get_pg_stats_2();
GRANT SELECT ON v_get_pg_stats_2 TO user_db;

					    
				    

Создаем табличный график, где источником является postgresql и в графике делаем select на view

image

Должно получиться что то подобное

image