Programiści Java EE, Administratorzy IT, Outsourcing IT
TwitterFacebookYouTubeEmail

PostgreSQL: kopia i odtworzenie całej bazy danych

Tworzenie kopii całej bazy danych

Kopię całej bazy danych najkorzystniej jest wykonać z konta użytkownika postgres, poprzez wydanie polecenia:
pg_dumpall > nazwa_pliku_kopii

Odtworzenie całej bazy danych

Odtworzenie całej bazy danych najkorzystniej jest wykonać z konta użytkownika postgres, poprzez wydanie polecenia:
psql -f nazwa_pliku_kopii postgres

PostreSQL: Obliczanie rozmiaru tabeli na dysku

Jeżeli zajdzie potrzeba określenia ile miejsca na dysku zajmuje konkretna tabela bazy danych, to możemy w tym celu użyć następujących funkcji:

  • pg_relation_size() – zwraca w bajtach rozmiar samej tabeli na dysku.
  • pg_total_relation_size() – zwraca w bajtach rozmiar tabeli oraz indeksów na dysku

W celu wyświetlania danych w formacie przyjaznym dla człowieka, polecam użycie funkcji pg_size_pretty().

Wyświetlenie rozmiaru samej tabeli bez indeksów możemy wykonać poprzez podanie poniższego polecenia:
cc=# SELECT pg_size_pretty(pg_relation_size('crm_worklog'));

 pg_size_pretty
----------------
 4856 kB
(1 row)

Wyświetlenie rozmiaru tabeli i indeksów możemy wykonać poprzez podanie poniższego polecenia:
cc=# SELECT pg_size_pretty(pg_total_relation_size('crm_worklog'));

 pg_size_pretty
----------------
 5424 kB
(1 row)

PostreSQL: Obliczanie miejsca zajmowanego na dysku przez bazę danych

Informacje o rozmiarze bazy danych zajmowanym na dysku możemy uzyskać poprzez wywołanie funkcji:
pg_database_size()

Powyższa funkcja podaje rozmiar w bajtach, co z reguły jest mało przyjazne dla człowieka. W związku z tym polecam użycie funkcji
pg_size_pretty()

Powyższa funkcja dokona konwersji wyświetlanych danych do formatu przyjaznego dla człowieka.
SELECT pg_size_pretty(pg_database_size('cc'));

W wyniku otrzymamy, na przykład:

pg_size_pretty
----------------
35 MB

PostreSQL: Jak znaleźć największą tabelę w bazie danych?

Niejednokrotnie zetknąłem się z potrzebą znalezienia największej tabeli w bazie danych. Zadanie to można wykonać stosunkowo prosto w następujących krokach:

1. Logujemy się do bazy danych PostgreSQL, na przykład:

psql baza_do_sprawdzenia_największej_tabeli

2. Wydajemy polecenie SQL:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC limit 1;

W wyniku otrzymamy na przykład:

relname | relpages
---------------------------------+----------
crm_log | 583