Skip to content

Instantly share code, notes, and snippets.

@nikolalsvk
Last active October 18, 2017 10:52
Show Gist options
  • Save nikolalsvk/29ce5e9d763c2dae48cb6fec96cba987 to your computer and use it in GitHub Desktop.
Save nikolalsvk/29ce5e9d763c2dae48cb6fec96cba987 to your computer and use it in GitHub Desktop.

PostgreSQL

SSH into PostgreSQL

psql -h DB_URL -U DB_USER DB_NAME

Then you will be asked for a DB_USER's password.

Check out progress on index creation

SELECT
  t.tablename,
  indexname,
  c.reltuples AS num_rows,
  pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
  pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
  CASE WHEN indisunique THEN 'Y'
    ELSE 'N'
  END AS UNIQUE,
  idx_scan AS number_of_scans,
  idx_tup_read AS tuples_read,
  idx_tup_fetch AS tuples_fetched
FROM pg_tables t
  LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
  LEFT OUTER JOIN
    ( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
      JOIN pg_class c ON c.oid = x.indrelid
      JOIN pg_class ipg ON ipg.oid = x.indexrelid
      JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
    AS foo
  ON t.tablename = foo.ctablename
WHERE t.schemaname='public'
ORDER BY 1,2;

Source: https://dba.stackexchange.com/a/161992

See most time consuming queries

SELECT
  (total_time / 1000 / 60) as total_minutes,
  (total_time / calls) as average_time,
  query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 100;

Source: http://www.craigkerstiens.com/2013/01/10/more-on-postgres-performance/

See indexes with low usage

SELECT
  schemaname || '.' || relname AS table,
  indexrelname AS index,
  pg_size_pretty(pg_relation_size(i.indexrelid)) AS index_size,
  idx_scan as index_scans
FROM pg_stat_user_indexes ui
JOIN pg_index i ON ui.indexrelid = i.indexrelid
WHERE NOT indisunique AND idx_scan < 50 AND pg_relation_size(relid) > 5 * 8192
ORDER BY pg_relation_size(i.indexrelid) / nullif(idx_scan, 0) DESC NULLS FIRST,
pg_relation_size(i.indexrelid) DESC;

Source: https://www.citusdata.com/blog/2017/10/11/index-all-the-things-in-postgres/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment