DB साइज कमांड पोस्टग्रेट्स


324

क्या Postgres में सभी डेटाबेस आकार को खोजने के लिए कोई कमांड है?

मैं निम्नलिखित कमांड का उपयोग करके एक विशिष्ट डेटाबेस का आकार खोजने में सक्षम हूं:

select pg_database_size('databaseName');

1
हालांकि इसकी इकाई क्या है? क्या यह बाइट्स में है?
हाबिल कैलेजो

यह बाइट्स है। :-)
जॉन्ह 16384

जवाबों:


365

और ... यदि आप पूरी क्वेरी टाइप नहीं करना चाहते हैं ... तो आप भी टाइप कर सकते हैं ...

\l+ <database_name>

और आपको डेटाबेस के बारे में कुछ जानकारी मिलेगी, जिसमें डेटाबेस का आकार भी शामिल है।

और ... सभी डेटाबेस का आकार प्राप्त करने के लिए।

आप बस टाइप कर सकते हैं ...

\l+

आपको इन पोस्टग्रेसल हेल्पर कमांड के साथ क्वेरी करने के लिए पोस्टग्रैस्कल कमांड प्रॉम्प्ट में जाने की आवश्यकता हो सकती है।

टाइप करके अन्य postgresql हेल्पर कमांड की जाँच करें

\?

Postgresql कमांड प्रॉम्प्ट पर।


193

आप सभी डेटाबेस के नाम प्राप्त कर सकते हैं जिन्हें आप "pg_datbase" सिस्टम तालिका से कनेक्ट कर सकते हैं। फ़ंक्शन को नीचे दिए गए नामों के अनुसार लागू करें।

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;

यदि आप एक मानव के बजाय मशीन द्वारा उपभोग किए जाने वाले आउटपुट का इरादा रखते हैं, तो आप pg_size_pretty () फ़ंक्शन को काट सकते हैं।


कभी-कभी डेटाबेस में अनुक्रमित भी होते हैं। इसका कुछ भंडारण मूल्य है। मैं एक आदेश की तलाश कर रहा हूं जो पूर्ण डेटाबेस का आकार प्रदान करेगा।
सुंदर दिमाग

11
@ user2151087: अनुक्रमणिकाओं के लिए आकार pg_database_size() शामिल हैं
a_horse_with_no_name

यदि कोई सोच रहा था, तो यह क्वेरी बिल्कुल वैसा ही मान प्रदान करती है जैसे कि \l+। आउटपुट स्वरूप पढ़ना आसान है, हालांकि (कम कॉलम)। लेखनीयता और पठनीयता के बीच व्यापार ...
स्किप्पी ले ग्रांड गौरौ

158
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));

5
वह उत्तर माइक के लिए अलग कैसे है?
a_horse_with_no_name

3
भविष्य में मुझे और यहां उतरने वाले अन्य लोगों के लिए, मैं आपको परेशानी से बचाऊंगा: यह एक छोटा है और नामित डेटाबेस / तालिका के लिए जहां माइक सभी डेटाबेस के लिए है, जिसमें से उत्तर मूल प्रश्न का बेहतर उत्तर देता है।
जेम्स ब्राउन

78

@ हेंडी इरावन द्वारा यहां उत्तर के आधार पर

डेटाबेस आकार दिखाएं:

\l+

जैसे

=> \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 | 

तालिका आकार दिखाएं:

\d+

जैसे

=> \d+
 public | tuneeca_prd | table | tomcat | 8192 bytes | 
 public | tuneeca_stg | table | tomcat | 1464 kB    | 

में ही काम करता है psql


1
मेरे लिए, केवल \d+ *काम किया, सादा \d+लौट आयाDid not find any relations.
देल पेरोझोकोव

1
@philpirozhkov पहले डेटाबेस से कनेक्ट करें ( \c dbname), फिर करें \d+
चप्प्पजेक

वह नंबर एक है या लोअरकेस एल?
dman

28

हां, Postgres में एक डेटाबेस का आकार खोजने के लिए एक कमांड है। यह निम्नलिखित है:

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;

3
इस फंक्शन में ऑर्डर देना गलत है। यह मानव पठनीय प्रारूपों के बीच अंतर नहीं बता सकता है। उदाहरण के लिए आकार 7151 केबी का डेटाबेस आकार 7 जीबी के डेटाबेस से पहले आता है।
onnimonni

फिक्स्ड: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;
माइकल

1
मुझे लगता है कि आपको केवल छंटाई के लिए "कच्चे" आकार की आवश्यकता है। मैंने उप-क्वेरी के बजाय इसका उपयोग किया 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;
एम-दाहब

20
SELECT pg_size_pretty(pg_database_size('name of database'));

आपको एक विशेष डेटाबेस का कुल आकार देगा, लेकिन मुझे नहीं लगता कि आप एक सर्वर के भीतर सभी डेटाबेस कर सकते हैं।

हालाँकि आप ऐसा कर सकते हैं ...

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इस घिनौने pl / pgsql के बजाय एक ही क्वेरी क्यों नहीं हो सकती है ?
मोहनरथ

12

से PostgreSQL विकि


नोट: वे डेटाबेस, जिनसे उपयोगकर्ता कनेक्ट नहीं हो सकते हैं, जैसे कि वे अनंत आकार के हैं।

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

आपके सबसे बड़े संबंधों और सबसे बड़ी तालिकाओं के आकार का पता लगाने के लिए पृष्ठ में स्निपेट भी हैं।


4

PostgreSQL के सभी डेटाबेस के आकार का पता लगाने के लिए आप नीचे क्वेरी का उपयोग कर सकते हैं।

इस ब्लॉग से संदर्भ लिया जाता है।

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;

3

PgAdmin प्रारंभ करें, सर्वर से कनेक्ट करें, डेटाबेस नाम पर क्लिक करें, और आँकड़े टैब का चयन करें। आपको सूची के नीचे डेटाबेस का आकार दिखाई देगा।

फिर यदि आप किसी अन्य डेटाबेस पर क्लिक करते हैं, तो यह आँकड़ों के टैब पर रहता है, ताकि आप बहुत प्रयास किए बिना आसानी से कई डेटाबेस आकार देख सकें। यदि आप तालिका सूची खोलते हैं, तो यह सभी तालिकाओं और उनके आकारों को दिखाता है।


1
और यदि आप Databasesट्री नोड (एक डीबी कनेक्शन से जुड़े) पर क्लिक करते हैं और उस Statisticsटैब का चयन करें जिसे आपको सभी डेटाबेस और उनके आकार (तीसरे कॉलम) के अच्छे सारांश के साथ प्रस्तुत किया जाएगा।
zloster

2
du -k /var/lib/postgresql/ |sort -n |tail

2
आप उन मान्यताओं के बारे में और अधिक संदर्भ जोड़ना चाहते हैं
जिनसे यह पुनः बनता है

3
हालांकि यह एक सटीक उत्तर हो सकता है, कुछ स्पष्टीकरण को शामिल करना सबसे अच्छा अभ्यास है।
स्नाइपर

CentOS पर सही आदेश यह एक है: du -k /var/lib/pgsql/ | sort -n | tail
फेरीमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.