Thursday, 3 February 2022

pgBadger - performance analyzer

pgBadger
pgBadger is a PostgreSQL performance analyzer, built for speed with fully detailed reports based on your PostgreSQL log files. ... In report "Tuples removed per table" additional autovacuum information are tuples remaining, tuples not yet removable and pages remaining.

=====================PGBADGER=======================

cd /var/
mkdir pgdata
initdb -D pgdata
cd pgdata
vi postgresq.conf

port=5001
log_destination = 'stderr'      
logging_collector = on      
log_rotation_age = 0            
client_min_messages = notice
log_min_messages = warning
log_min_error_statement = error
log_min_duration_statement = 0
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_error_verbosity = verbose       
log_hostname = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '          
log_lock_waits = on         
log_statement = 'all'       
log_temp_files = 0      

:wq

pg_ctl -D pgdata restart

https://github.com/darold/pgbadger

[root@postgres Desktop]# cp pgbadger-master.zip /opt/
[root@postgres Desktop]# unzip pgbadger-master.zip

[root@postgres Desktop]# su - postgres
-bash-4.1$ psql -p 5001
psql.bin (10.9)
Type "help" for help.

postgres=# create user u01 password '123456';
CREATE ROLE
postgres=# create user hr password '123456';
CREATE ROLE
postgres=# create user admin password '123456';
CREATE ROLE
postgres=# create database db1;
CREATE DATABASE
postgres=# create database db2;
CREATE DATABASE
postgres=# create database db3;
CREATE DATABASE
postgres=# \c db1 u01
You are now connected to database "db1" as user "u01".
db1=> create table tbl1 as select * from pg_class;
SELECT 341
db1=> select count(*) from tbl1;
 count 
-------
   341
(1 row)

db1=> \c db2 hr
You are now connected to database "db2" as user "hr".
db2=> create table tbl1 (id int);
CREATE TABLE
db2=> insert into tbl1 select * from generate_Series(1,100000) order by random();
INSERT 0 100000
db2=> update tbl1 set id=1 where id between 1 and 100;
UPDATE 100
db2=> 
db2=> 
db2=> \db3 admin
   List of tablespaces
 Name | Owner | Location 
------+-------+----------
(0 rows)

db2=> \c db3 admin
You are now connected to database "db3" as user "admin".
db3=> 
db3=> 
db3=> create table tbl1 (id int,name varchar);
CREATE TABLE
db3=> 
db3=> 
db3=> insert into tbl1 values(generate_Series(1,100000), 'postgres');
INSERT 0 100000
db3=> 
db3=> 
db3=> delete from tbl1 where id between 1 and 6000;
DELETE 6000
db3=> 
db3=> 
db3=> select count(*) from tbl1;
 count 
-------
 94000
(1 row)

db3=> 
db3=> explain analyze select * from tbl1;
                                                QUERY PLAN                                                 
-------------------------------------------------------------------------------------------
 Seq Scan on tbl1  (cost=0.00..1228.07 rows=68707 width=36) (actual time=0.128..25.410 rows=94000 loops=1)
 Planning time: 0.057 ms
 Execution time: 39.410 ms
(3 rows)

db3=> \q

=========generating pgbadger report===================

[root@postgres Desktop]# cd /opt/
[root@postgres opt]# ls
[root@postgres opt]# unzip pgbadger-master.zip 

[root@postgres opt]# cd /var/pgdata/log/
[root@postgres log]# ls -l
total 20
-rw-------. 1 postgres postgres 17028 Aug  7 12:34 postgresql-2019-08-07_122642.log


[root@postgres log]# cd /opt/pgbadger-master
[root@postgres pgbadger-master]# ls
ChangeLog  CONTRIBUTING.md  doc  LICENSE  Makefile.PL  MANIFEST  META.yml  pgbadger  README  tools


[root@postgres pgbadger-master]# ./pgbadger -f stderr -o report.html /var/pgdata/log/postgresql-2019-08-07_122642.log
[========================>] Parsed 17028 bytes of 17028 (100.00%), queries: 36, events: 1
LOG: Ok, generating html report...


[root@postgres pgbadger-master]# ls
ChangeLog  CONTRIBUTING.md  doc  LICENSE  Makefile.PL  MANIFEST  META.yml  pgbadger  README  report.html  tools

[root@postgres pgbadger-master]# cp report.html /root/Desktop/



No comments:

Post a Comment

Master and Slave - Sync check - PostgreSQL

  1) Run the below Query on Primary:- SELECT     pid,     usename,     application_name,     client_addr,     state,     sync_state,     sen...