Czy jest jakieś polecenie, aby znaleźć wszystkie bazy danych w Postgres?
Jestem w stanie znaleźć rozmiar konkretnej bazy danych za pomocą następującego polecenia:
select pg_database_size('databaseName');
Czy jest jakieś polecenie, aby znaleźć wszystkie bazy danych w Postgres?
Jestem w stanie znaleźć rozmiar konkretnej bazy danych za pomocą następującego polecenia:
select pg_database_size('databaseName');
Odpowiedzi:
I ... Jeśli nie chcesz wpisywać całego zapytania ... możesz także wpisać ...
\l+ <database_name>
a otrzymasz szczegółowe informacje na temat bazy danych, w tym rozmiar bazy danych.
I ... Aby uzyskać rozmiary wszystkich baz danych.
możesz po prostu wpisać ...
\l+
Może być konieczne przejście do wiersza polecenia postgresql w celu wykonania zapytania za pomocą poleceń pomocniczych postgresql.
Sprawdź inne polecenia pomocnika postgresql, wpisując
\?
w wierszu polecenia postgresql.
Nazwy wszystkich baz danych, z którymi można się połączyć, można uzyskać z tabeli systemowej „pg_datbase”. Po prostu zastosuj funkcję do nazw, jak poniżej.
select t1.datname AS db_name,
pg_size_pretty(pg_database_size(t1.datname)) as db_size
from pg_database t1
order by pg_database_size(t1.datname) desc;
Jeśli chcesz, aby dane wyjściowe były konsumowane przez maszynę zamiast człowieka, możesz wyciąć funkcję pg_size_pretty ().
pg_database_size()
obejmuje rozmiary indeksów
\l+
. Format wyjściowy jest jednak łatwiejszy do odczytania (mniej kolumn). Kompromis między zapisywalnością a czytelnością…
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
Na podstawie odpowiedzi tutaj przez @Hendy Irawan
Pokaż rozmiary bazy danych:
\l+
na przykład
=> \l+
berbatik_prd_commerce | berbatik_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 19 MB | pg_default |
berbatik_stg_commerce | berbatik_stg | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 8633 kB | pg_default |
bursasajadah_prd | bursasajadah_prd | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 1122 MB | pg_default |
Pokaż rozmiary stołów:
\d+
na przykład
=> \d+
public | tuneeca_prd | table | tomcat | 8192 bytes |
public | tuneeca_stg | table | tomcat | 1464 kB |
Działa tylko w psql
.
\d+ *
działało, zwykły \d+
wróciłDid not find any relations.
\c dbname
), a następnie zrób \d+
.
Tak, w Postgres istnieje polecenie znalezienia rozmiaru bazy danych. To jest następujące:
SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;
SELECT database_name, pg_size_pretty(size) from (SELECT pg_database.datname as "database_name", pg_database_size(pg_database.datname) AS size FROM pg_database ORDER by size DESC) as ordered;
SELECT pg_database.datname AS "DB Name", pg_size_pretty(pg_database_size(pg_database.datname)) AS "Size" FROM pg_database ORDER BY (pg_database_size(pg_database.datname)) DESC;
.
SELECT pg_size_pretty(pg_database_size('name of database'));
Podaje całkowity rozmiar konkretnej bazy danych, jednak nie sądzę, że można wykonać wszystkie bazy danych na serwerze.
Jednak możesz to zrobić ...
DO
$$
DECLARE
r RECORD;
db_size TEXT;
BEGIN
FOR r in
SELECT datname FROM pg_database
WHERE datistemplate = false
LOOP
db_size:= (SELECT pg_size_pretty(pg_database_size(r.datname)));
RAISE NOTICE 'Database:% , Size:%', r.datname , db_size;
END LOOP;
END;
$$
pg_database
zamiast tego ohydnego pl / pgsql?
Z wiki PostgreSQL .
UWAGA: Bazy danych, z którymi użytkownik nie może się połączyć, są sortowane tak, jakby miały nieskończony rozmiar.
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS Size
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
Strona zawiera także fragmenty pozwalające znaleźć rozmiar twoich największych relacji i największych tabel.
Możesz użyć poniższego zapytania, aby znaleźć rozmiar wszystkich baz danych PostgreSQL.
Referencje pochodzą z tego bloga.
SELECT
datname AS DatabaseName
,pg_catalog.pg_get_userbyid(datdba) AS OwnerName
,CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(datname))
ELSE 'No Access For You'
END AS DatabaseSize
FROM pg_catalog.pg_database
ORDER BY
CASE
WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
THEN pg_catalog.pg_database_size(datname)
ELSE NULL
END DESC;
Uruchom pgAdmin, połącz się z serwerem, kliknij nazwę bazy danych i wybierz kartę statystyk. Rozmiar bazy danych zobaczysz u dołu listy.
Następnie, jeśli klikniesz inną bazę danych, pozostanie ona na karcie statystyk, dzięki czemu możesz łatwo zobaczyć wiele rozmiarów bazy danych bez większego wysiłku. Jeśli otworzysz listę tabel, zobaczysz wszystkie tabele i ich rozmiary.
Databases
węzeł drzewa (podłączony do połączenia Statistics
z bazą danych ) i wybierzesz kartę, zostanie wyświetlone ładne podsumowanie wszystkich baz danych i ich rozmiarów (trzecia kolumna).
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail