Postgres'te tüm veritabanlarının boyutunu bulmak için herhangi bir komut var mı?
Aşağıdaki komutu kullanarak belirli bir veritabanının boyutunu bulmak mümkün:
select pg_database_size('databaseName');
Postgres'te tüm veritabanlarının boyutunu bulmak için herhangi bir komut var mı?
Aşağıdaki komutu kullanarak belirli bir veritabanının boyutunu bulmak mümkün:
select pg_database_size('databaseName');
Yanıtlar:
Ve ... Eğer tam bir sorgu yazmak istemeyecekseniz ... ayrıca yazabilirsiniz ...
\l+ <database_name>
ve veritabanının boyutu da dahil olmak üzere veritabanı hakkında bazı ayrıntılar alırsınız.
Ve ... Tüm veritabanlarının boyutlarını elde etmek için.
yazabilirsiniz ...
\l+
Bu postgresql yardımcı komutlarıyla sorgulamak için postgresql komut istemine gitmeniz gerekebilir.
Diğer postgresql yardımcı komutlarını yazarak kontrol edin
\?
postgresql komut isteminde.
Bağlanabileceğiniz tüm veritabanlarının adlarını "pg_datbase" sistem tablosundan alabilirsiniz. İşlevi aşağıdaki adlara uygulamanız yeterlidir.
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;
Çıktının bir insan yerine bir makine tarafından tüketilmesini istiyorsanız, pg_size_pretty () işlevini kesebilirsiniz.
pg_database_size()
içerir
\l+
. Çıktı formatının okunması daha kolaydır (daha az sütun).
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
Yanıta göre burada tarafından @Hendy Irawan
Veritabanı boyutlarını göster:
\l+
Örneğin
=> \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 |
Tablo boyutlarını göster:
\d+
Örneğin
=> \d+
public | tuneeca_prd | table | tomcat | 8192 bytes |
public | tuneeca_stg | table | tomcat | 1464 kB |
Yalnızca içinde çalışır psql
.
\d+ *
çalıştı, sade \d+
döndüDid not find any relations.
\c dbname
), sonra yapın \d+
.
Evet, Postgres'te bir veritabanının boyutunu bulma komutu vardır. Bu şudur:
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'));
Size belirli bir veritabanının toplam boyutunu verecektir ancak bir sunucu içindeki tüm veritabanlarını yapabileceğinizi düşünmüyorum.
Ancak bunu yapabilirsin ...
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
bu iğrenç pl / pgsql yerine tek bir sorgu olamaz?
Gönderen PostgreSQL wiki .
NOT: Kullanıcının bağlanamadığı veritabanları sonsuz boyuttaymış gibi sıralanır.
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
Sayfa ayrıca en büyük ilişkilerinizin ve en büyük tablolarınızın boyutunu bulmak için snippet'lere sahiptir.
PostgreSQL'in tüm veritabanlarının boyutunu bulmak için aşağıdaki sorguyu kullanabilirsiniz.
Bu blogdan referans alınmıştır.
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;
PgAdmin'i başlatın, sunucuya bağlanın, veritabanı adını tıklayın ve istatistik sekmesini seçin. Listenin altında veritabanının boyutunu göreceksiniz.
Daha sonra başka bir veritabanına tıklarsanız, çok fazla çaba harcamadan birçok veritabanı boyutunu kolayca görebilmeniz için istatistikler sekmesinde kalır. Tablo listesini açarsanız, tüm tabloları ve boyutlarını gösterir.
Databases
ağaç düğümünü tıklarsanız (bir DB bağlantısına eklenir) ve Statistics
sekmeyi seçerseniz, tüm Veritabanları ve boyutlarının güzel bir özeti sunulur (üçüncü sütun).
du -k /var/lib/postgresql/ |sort -n |tail
du -k /var/lib/pgsql/ | sort -n | tail