Last active
March 16, 2020 10:00
-
-
Save panzelva/eeadb503114d53880770f7bfa5a24484 to your computer and use it in GitHub Desktop.
PostgreSQL snippets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ALTER USER <user_name> WITH PASSWORD '<user_password>'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- Create a group | |
| CREATE ROLE readonly; | |
| -- Grant access to existing tables | |
| GRANT USAGE ON SCHEMA public TO readonly; | |
| GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly; | |
| -- Grant access to future tables | |
| ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly; | |
| -- Create a final user with password | |
| CREATE USER <user_name> WITH PASSWORD '<user_password>'; | |
| GRANT readonly TO <user_name>; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- create superuser | |
| CREATE USER <user_name> WITH PASSWORD '<user_name>' WITH SUPERUSER; | |
| ALTER USER <user_name> WITH SUPERUSER; | |
| -- revoke superuser | |
| ALTER USER <user_name> WITH NOSUPERUSER; | |
| DROP USER <user_name>; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- show running queries (pre 9.2) | |
| SELECT procpid, age(clock_timestamp(), query_start), usename, current_query | |
| FROM pg_stat_activity | |
| WHERE current_query != '<IDLE>' AND current_query NOT ILIKE '%pg_stat_activity%' | |
| ORDER BY query_start desc; | |
| -- show running queries (9.2) | |
| SELECT age(clock_timestamp(), query_start) AS "age", * | |
| FROM pg_stat_activity | |
| WHERE query NOT ILIKE '%pg_stat_activity%' AND state = 'active' | |
| ORDER BY query_start DESC; | |
| -- kill running query | |
| SELECT pg_cancel_backend(procpid); | |
| -- kill idle query | |
| SELECT pg_terminate_backend(procpid); | |
| -- vacuum command | |
| VACUUM (VERBOSE, ANALYZE); | |
| -- all database users | |
| select * from pg_stat_activity where current_query not like '<%'; | |
| -- all databases and their sizes | |
| select * from pg_user; | |
| -- all tables and their size, with/without indexes | |
| select datname, pg_size_pretty(pg_database_size(datname)) | |
| from pg_database | |
| order by pg_database_size(datname) desc; | |
| -- cache hit rates (should not be less than 0.99) | |
| SELECT sum(heap_blks_read) as heap_read, sum(heap_blks_hit) as heap_hit, (sum(heap_blks_hit) - sum(heap_blks_read)) / sum(heap_blks_hit) as ratio | |
| FROM pg_statio_user_tables; | |
| -- table index usage rates (should not be less than 0.99) | |
| SELECT relname, 100 * idx_scan / (seq_scan + idx_scan) percent_of_times_index_used, n_live_tup rows_in_table | |
| FROM pg_stat_user_tables | |
| ORDER BY n_live_tup DESC; | |
| -- how many indexes are in cache | |
| SELECT sum(idx_blks_read) as idx_read, sum(idx_blks_hit) as idx_hit, (sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as ratio | |
| FROM pg_statio_user_indexes; | |
| -- Dump database on remote host to file | |
| $ pg_dump -U username -h hostname databasename > dump.sql | |
| -- Import dump into existing database | |
| $ psql -d newdb -f dump.sql |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment