==== Drop database & close connections ====
drop database [db] WITH (force)
==== Drop all tables ====
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
END LOOP;
END $$;
==== Dump local database to file ====
PGDATABASE=mydb
pg_dump -Fc -Z 9 -d $PGDATABASE -U $POSTGRES_USER > /tmp/$PGDATABASE.dump
==== Import dump file in existing local database ====
PGDATABASE=mydb
POSTGRES_USER=postgres
pg_restore --clean -Fc -j 8 -d $PGDATABASE -U $POSTGRES_USER /tmp/db.sql
==== Run postgresqltuner script in alpine docker image ====
apk add perl perl-dbd-pg && wget -O /tmp/postgresqltuner.pl https://postgresqltuner.pl && chmod +x /tmp/postgresqltuner.pl && /tmp/postgresqltuner.pl
==== Check longest queries ====
SELECT *
FROM
pg_stat_statements
ORDER BY
total_exec_time DESC
LIMIT
5;
SELECT
pid,
now() - pg_stat_activity.query_start AS duration,
query,
query_start,
state
FROM pg_stat_activity
==== Check locks ====
select l.pid, l.mode, sa.pid, sa.query
from pg_locks l
inner join pg_stat_activity sa
on l.pid = sa.pid
where l.mode like '%xclusive%';