dba:postgresql:postgresql_basic_querys
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
dba:postgresql:postgresql_basic_querys [2022/02/16 15:44] – [Space used for each relation] dodger | dba:postgresql:postgresql_basic_querys [2024/04/19 07:37] (current) – [Section: EMPTY] dodger | ||
---|---|---|---|
Line 57: | Line 57: | ||
===== autocommit ===== | ===== autocommit ===== | ||
- | <code sql> | + | *WARNING* '' |
- | \set AUTOCOMMIT off | + | \\ |
- | </ | + | '' |
Check: | Check: | ||
Line 108: | Line 109: | ||
===== list schemas ===== | ===== list schemas ===== | ||
+ | Sortcode: | ||
< | < | ||
\dn | \dn | ||
+ | </ | ||
+ | |||
+ | Query: | ||
+ | <code sql> | ||
+ | SELECT n.nspname AS " | ||
+ | pg_catalog.pg_get_userbyid(n.nspowner) AS " | ||
+ | FROM pg_catalog.pg_namespace n | ||
+ | WHERE n.nspname !~ ' | ||
+ | ORDER BY 1; | ||
</ | </ | ||
Line 150: | Line 161: | ||
===== list functions ===== | ===== list functions ===== | ||
+ | |||
+ | <code sql> | ||
+ | \df | ||
+ | </ | ||
+ | |||
+ | Or | ||
+ | <code sql> | ||
+ | SELECT n.nspname as " | ||
+ | p.proname as " | ||
+ | CASE p.prokind | ||
+ | WHEN ' | ||
+ | WHEN ' | ||
+ | WHEN ' | ||
+ | ELSE ' | ||
+ | END as " | ||
+ | FROM pg_catalog.pg_proc p LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace | ||
+ | WHERE pg_catalog.pg_function_is_visible(p.oid) | ||
+ | AND n.nspname <> ' | ||
+ | AND n.nspname <> ' | ||
+ | ORDER BY 1, 2; | ||
+ | </ | ||
+ | |||
+ | |||
+ | or complete: | ||
+ | <code sql> | ||
+ | SELECT n.nspname as " | ||
+ | p.proname as " | ||
+ | pg_catalog.pg_get_function_result(p.oid) as " | ||
+ | pg_catalog.pg_get_function_arguments(p.oid) as " | ||
+ | CASE p.prokind | ||
+ | WHEN ' | ||
+ | WHEN ' | ||
+ | WHEN ' | ||
+ | ELSE ' | ||
+ | END as " | ||
+ | FROM pg_catalog.pg_proc p | ||
+ | LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace | ||
+ | WHERE pg_catalog.pg_function_is_visible(p.oid) | ||
+ | AND n.nspname <> ' | ||
+ | AND n.nspname <> ' | ||
+ | ORDER BY 1, 2; | ||
+ | </ | ||
+ | Note: | ||
+ | " | ||
+ | |||
+ | ==== Aggregate functions ==== | ||
+ | |||
<code sql> | <code sql> | ||
\da | \da | ||
Line 177: | Line 235: | ||
===== list objects in schema ===== | ===== list objects in schema ===== | ||
- | Change ''< | + | Change ''< |
+ | |||
<code sql> | <code sql> | ||
select n.nspname as schema_name, | select n.nspname as schema_name, | ||
Line 211: | Line 271: | ||
</ | </ | ||
+ | ===== ALL Databases size ===== | ||
+ | <code sql> | ||
+ | DO $$ | ||
+ | DECLARE thedb text; | ||
+ | DECLARE dbsize text; | ||
+ | BEGIN | ||
+ | FOR thedb IN SELECT datname FROM pg_database where datname not in (' | ||
+ | LOOP | ||
+ | select pg_size_pretty(pg_database_size( thedb )) into dbsize ; | ||
+ | raise notice ' | ||
+ | END LOOP; | ||
+ | END$$; | ||
+ | </ | ||
===== Space used for each table ===== | ===== Space used for each table ===== | ||
<code sql> | <code sql> | ||
Line 256: | Line 329: | ||
WHERE TABLE_NAME | WHERE TABLE_NAME | ||
order by ordinal_position | order by ordinal_position | ||
+ | ; | ||
+ | </ | ||
+ | ==== dba_tab_columns ==== | ||
+ | |||
+ | inefficient but who cares | ||
+ | <code sql> | ||
+ | SELECT * from | ||
+ | ( | ||
+ | SELECT table_catalog DB_NAME, | ||
+ | table_schema SCHEMA_NAME, | ||
+ | table_name, | ||
+ | column_name, | ||
+ | ordinal_position, | ||
+ | data_type, | ||
+ | character_maximum_length, | ||
+ | column_default, | ||
+ | is_nullable | ||
+ | FROM information_schema.columns | ||
+ | order by ordinal_position | ||
+ | ) as dba_tab_columns | ||
+ | WHERE COLUMN_NAME LIKE ' | ||
; | ; | ||
</ | </ | ||
Line 269: | Line 363: | ||
FROM INFORMATION_SCHEMA.STATISTICS | FROM INFORMATION_SCHEMA.STATISTICS | ||
WHERE TABLE_SCHEMA = ' | WHERE TABLE_SCHEMA = ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== List column index ===== | ||
+ | ==== dba_ind_columns ==== | ||
+ | |||
+ | |||
+ | <code sql> | ||
+ | SELECT | ||
+ | np.nspname AS schema_name, | ||
+ | t.relname AS table_name, | ||
+ | a.attname AS column_name, | ||
+ | i.relname AS index_name | ||
+ | FROM | ||
+ | pg_class t, | ||
+ | pg_class i, | ||
+ | pg_index ix, | ||
+ | pg_attribute a, | ||
+ | pg_namespace np | ||
+ | WHERE | ||
+ | t.oid = ix.indrelid | ||
+ | AND i.oid = ix.indexrelid | ||
+ | AND a.attrelid = t.oid | ||
+ | AND a.attnum = ANY(ix.indkey) | ||
+ | AND np.oid = t.relnamespace | ||
+ | AND t.relkind = ' | ||
+ | AND a.attname like ' | ||
+ | AND i.relname like ' | ||
+ | AND t.relname like ' | ||
+ | ORDER BY | ||
+ | t.relname, | ||
+ | a.attname; | ||
</ | </ | ||
Line 287: | Line 414: | ||
===== show object source ===== | ===== show object source ===== | ||
Change '' | Change '' | ||
+ | |||
+ | |||
<code sql> | <code sql> | ||
select prosrc from pg_proc where proname=' | select prosrc from pg_proc where proname=' | ||
Line 393: | Line 522: | ||
</ | </ | ||
- | <code sql>SELECT pid, | + | <code sql>select |
- | usename, | + | datname, |
- | -- application_name, | + | usename, |
- | | + | application_name, |
- | backend_start, | + | |
- | -- xact_start, | + | backend_start , |
- | now()-query_start | + | xact_start |
- | -- state_change, | + | now()-query_start |
- | | + | state_change, |
- | state, | + | query |
- | | + | from pg_stat_activity |
- | from pg_stat_activity; | + | ; |
</ | </ | ||
+ | |||
+ | |||
+ | **without** sql: | ||
+ | <code sql> | ||
+ | datname, | ||
+ | usename, | ||
+ | application_name, | ||
+ | state , | ||
+ | backend_start , | ||
+ | xact_start | ||
+ | now()-query_start query_duration, | ||
+ | state_change | ||
+ | from pg_stat_activity | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | |||
Fits fhd screen: | Fits fhd screen: | ||
Line 445: | Line 591: | ||
===== Locks ===== | ===== Locks ===== | ||
+ | This query will list all locks: | ||
<code sql> | <code sql> | ||
SELECT psa.datid, | SELECT psa.datid, | ||
Line 460: | Line 607: | ||
; | ; | ||
</ | </ | ||
+ | |||
+ | This query will list all //blocking sessions//, see [[https:// | ||
+ | <code sql> | ||
+ | SET application_name=' | ||
+ | SELECT blocked_locks.pid | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | JOIN pg_catalog.pg_stat_activity blocked_activity | ||
+ | JOIN pg_catalog.pg_locks | ||
+ | ON blocking_locks.locktype = blocked_locks.locktype | ||
+ | AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE | ||
+ | AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation | ||
+ | AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page | ||
+ | AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple | ||
+ | AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid | ||
+ | AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid | ||
+ | AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid | ||
+ | AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid | ||
+ | AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid | ||
+ | AND blocking_locks.pid != blocked_locks.pid | ||
+ | JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid | ||
+ | WHERE NOT blocked_locks.GRANTED; | ||
+ | </ | ||
+ | |||
+ | |||
===== Change user password ===== | ===== Change user password ===== | ||
<code sql> | <code sql> | ||
Line 465: | Line 643: | ||
</ | </ | ||
+ | |||
+ | ===== dump/export all users with password ===== | ||
+ | <code bash> | ||
+ | pg_dumpall --globals-only --file=all_roles_and_users.sql -h 127.0.0.1 | ||
+ | </ | ||
===== List extensions installed ===== | ===== List extensions installed ===== | ||
Line 483: | Line 666: | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== List Foreign keys (FK) ===== | ||
+ | |||
+ | From [[https:// | ||
+ | <code sql> | ||
+ | select kcu.table_schema || ' | ||
+ | '> | ||
+ | | ||
+ | | ||
+ | | ||
+ | from information_schema.table_constraints tco | ||
+ | join information_schema.key_column_usage kcu | ||
+ | on tco.constraint_schema = kcu.constraint_schema | ||
+ | and tco.constraint_name = kcu.constraint_name | ||
+ | join information_schema.referential_constraints rco | ||
+ | on tco.constraint_schema = rco.constraint_schema | ||
+ | and tco.constraint_name = rco.constraint_name | ||
+ | join information_schema.table_constraints rel_tco | ||
+ | on rco.unique_constraint_schema = rel_tco.constraint_schema | ||
+ | and rco.unique_constraint_name = rel_tco.constraint_name | ||
+ | where tco.constraint_type = ' | ||
+ | group by kcu.table_schema, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | order by kcu.table_schema, | ||
+ | | ||
+ | |||
+ | </ | ||
+ | ====== Section: VACUUM ====== | ||
+ | |||
+ | ===== vacuum date by table ===== | ||
+ | <code sql> | ||
+ | select | ||
+ | relname, | ||
+ | last_vacuum, | ||
+ | last_autovacuum, | ||
+ | last_analyze, | ||
+ | last_autoanalyze | ||
+ | from | ||
+ | pg_stat_user_tables; | ||
+ | </ | ||
====== Section: Streaming Replication ====== | ====== Section: Streaming Replication ====== | ||
Line 608: | Line 835: | ||
<code sql> | <code sql> | ||
select * from pgagent.pga_job ; | select * from pgagent.pga_job ; | ||
+ | </ | ||
+ | |||
+ | Less info: | ||
+ | <code sql> | ||
+ | select jobid, | ||
+ | jobname, | ||
+ | jobdesc, | ||
+ | jobenabled | ||
+ | from pgagent.pga_job ; | ||
</ | </ | ||
Line 649: | Line 885: | ||
- | ====== Section: | + | ====== Section: |
+ | This is an example on how to use XMLTABLE function to extract data from a XML column: | ||
+ | <code sql> | ||
+ | select | ||
+ | bdef.build_definition_id as build_definition_id, | ||
+ | tasks.task_definition_id as task_definition_id, | ||
+ | tasks.user_description as user_description, | ||
+ | tasks.is_enabled as is_enabled, | ||
+ | tasks.plugin_key as plugin_key, | ||
+ | tasks.finalising as finalising, | ||
+ | config_items.item_key as item_key, | ||
+ | config_items.item_value as item_value | ||
+ | FROM | ||
+ | build_definition bdef, | ||
+ | XMLTABLE('// | ||
+ | COLUMNS | ||
+ | task_definition_id integer PATH ' | ||
+ | user_description text PATH ' | ||
+ | is_enabled boolean PATH ' | ||
+ | plugin_key text PATH ' | ||
+ | finalising boolean PATH ' | ||
+ | config XML PATH ' | ||
+ | left join XMLTABLE('// | ||
+ | on true | ||
+ | where xml_definition_data LIKE ' | ||
+ | order by 1 | ||
+ | ; | ||
+ | </ | ||
+ | ====== Section: EMPTY ====== | ||
- | + | < | |
- | + | ||
- | + | ||
- | < | + | |
</ | </ | ||
dba/postgresql/postgresql_basic_querys.1645026263.txt.gz · Last modified: 2022/02/16 15:44 by dodger