Размер самых больших таблиц, dump (SQL-шпаргалка)

Узнать размер самых больших таблиц в базе PostgreSQL, создать дамп БД

Узнать размер таблиц

Размер самых больших 20 таблиц

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_relation_size(C.oid)) AS "size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
  ORDER BY pg_relation_size(C.oid) DESC
  LIMIT 20;

Размер всех таблиц

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_relation_size(C.oid)) AS "size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
  ORDER BY pg_relation_size(C.oid) DESC;

Общий размер таблиц

SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 20;

Дамп БД

Создание дампа

pg_dump dbname > outfile

Восстановление из файла

psql --set ON_ERROR_STOP=on dbname < infile

Копирование данных с одной ДБ в другую

pg_dump -h host1 dbname | psql -h host2 dbname

Создание дампа с сжатием GZ

pg_dump dbname | gzip > filename.gz

Восстановление из архива

gunzip -c filename.gz | psql dbname

или

cat filename.gz | gunzip | psql dbname

Восстановление в docker

docker exec -i posgres_1 psql -v -d dbname -U username < ./sqlscript.sql

Источники

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.