Check if the pg_stat_statements extension is active in Postgresql: select * from pg_extension; If not, then: execute in SQL: create extension pg_stat_statements; in Postgresql.conf modify: shared_preload_libraries = 'pg_stat_statements' Restart server, and now you can see the sql statements per second: -- queries per second with t1 as (select sum(calls) n from pg_stat_statements), t2 as (select sum(calls) n from pg_stat_statements , pg_sleep(1)) select t2.n-t1.n the_num_of_queries_per_second from t1,t2; -- Top time consuming queries select userid::regrole, dbid, query ,calls, (total_plan_time + total_exec_time) / 1000 as total_time_seconds, (min_plan_time + min_exec_time) / 1000 as min_time_seconds, (max_plan_time + max_exec_time) / 1000 as max_time_seconds, (mean_plan_time + mean_exec_time) / 1000 as mean_time_seconds from pg_stat_statements order by (mean_plan_time + mean_exec_time) desc limit 10; -- queries having high i/o activity select userid::regrole, dbid, query,queryid, (mean_plan_time + mean_exec_time)/1000 as mean_time_seconds from pg_stat_statements order by (blk_read_time+blk_write_time) desc limit 10; -- queries with high memory usage select userid::regrole, dbid, queryid,query from pg_stat_statements order by (shared_blks_hit+shared_blks_dirtied) desc limit 10; -- reset the stats select pg_stat_statements_reset(); -- number of queries running at this moment select * from pg_stat_activity; -- number of queries running for more than 30 seconds select * from pg_stat_activity where (now() - query_start) > interval '30 seconds'; -- What is the replication server? select * from pg_stat_replication; -- The Usertables having a tablescan: select relname, seq_scan from pg_stat_user_tables order by seq_scan desc; -- Put the tablescan values in a separate tmp table for comparison at a later time create table stats_snapshot_0938 as select relname, seq_scan from pg_stat_user_tables; -- select * from stats_snapshot_0938; -- drop table stats_snapshot_0938; -- Compare the values with the old values... select stats_now.relname, (stats_now.seq_scan - stats_old.seq_scan) difference from pg_stat_user_tables stats_now join stats_snapshot_0938 stats_old on stats_now.relname = stats_old.relname order by difference desc;
vrijdag 15 december 2023
Postgresql: Number of sql statements per second
Abonneren op:
Reacties posten (Atom)
Geen opmerkingen:
Een reactie posten