Każda relacyjna baza danych zawiera obiekty takie jak tabele i relacje. Chyba nie trzeba nikomu tłumaczyć co to takiego. PostgreSQL zawiera dodatkowo obiekty takie jak schematy. Schemat w PostgreSQL to taka kolekcja tabel, widoków, indeksów funkcji i innych obiektów bazy danych. W najprostrzym ujęciu można by było przyrównać je do katalogów w systemie operacyjnym, z tą różnicą, że schematów nie można zagnieżdżać. Poniżej przedstawiam kilka standardowych zapytań operujących na schematach, tabelach i relacjach, które warto znać. Zamieszczam także wyniki danych zapytań, byście mieli ogólny pogląd na to jak to wygląda w realiach. Zapytania przeprowadzone na świeżo postawionej bazie danych.
Listowanie wszystkich baz danych
SELECT * FROM pg_database; datname | datdba | encoding | datcollate | -----------+--------+----------+-------------+- template1 | 10 | 6 | pl_PL.UTF-8 | template0 | 10 | 6 | pl_PL.UTF-8 | postgres | 10 | 6 | pl_PL.UTF-8 | test | 10 | 6 | pl_PL.UTF-8 | test2 | 10 | 6 | pl_PL.UTF-8 | (5 wierszy)
Wielkości baz danych
Łączną wielkość wszystkich baz danych możemy sprawdzić następująco:
SELECT sum(pg_database_size(datname)) FROM pg_database; sum ---------- 33186868 (1 wiersz)
Wielkości poszczególnych baz danych:
SELECT datname, pg_database_size(datname) FROM pg_database GROUP BY datname; datname | pg_database_size -----------+------------------ postgres | 6729492 template0 | 6578692 template1 | 6586884 test | 6704916 test2 | 6586884 (5 wierszy)
Troszeczke przyjaźniejsza dla oka wersja:
SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database GROUP BY datname; datname | pg_size_pretty -----------+---------------- postgres | 6572 kB template0 | 6425 kB template1 | 6433 kB test | 6548 kB test2 | 6433 kB (5 wierszy)
Jak można zauważyć wszystkie domyślne wielkości są podawane w bajtach. Możemy także wydać zapytanie co do wielkości używanej aktualnie bazy danych:
SELECT current_database(); current_database ------------------ postgres (1 wiersz) SELECT pg_size_pretty(pg_database_size(current_database())); pg_size_pretty ---------------- 6572 kB (1 wiersz)