Postgres: भौतिक दृष्टि से लिया गया डिस्क स्थान जांचें?


14

मुझे पता है कि Postgres में अनुक्रमित और तालिकाओं के आकार की जांच कैसे करें (मैं संस्करण 9.4 का उपयोग कर रहा हूं):

SELECT
   relname AS objectname,
   relkind AS objecttype,
   reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size
   FROM pg_class
   WHERE relpages >= 8
   ORDER BY relpages DESC;

लेकिन यह भौतिक विचारों को प्रदर्शित नहीं करता है। मैं कैसे जांच कर सकता हूं कि वे कितना डिस्क स्थान ले रहे हैं?

जवाबों:


23

यह माना जा रहा है कि भौतिक विचारों relpages >= 8में है pg_class, जो मामला नहीं है। यह वास्तव में खाली हो सकता है - अभी तक आबादी नहीं है, द्वारा इंगित किया गया है pg_class.relispopulated = FALSE। संबंधित डिस्क फ़ाइल में इस मामले में एक शून्य आकार है।

इसके बजाय कोशिश करें:

SELECT relname   AS objectname
     , relkind   AS objecttype
     , reltuples AS entries
     , pg_size_pretty(pg_table_size(oid)) AS size  -- depending - see below
FROM   pg_class
WHERE  relkind IN ('r', 'i', 'm')
ORDER  BY pg_table_size(oid) DESC;

जहाँ उपलब्ध प्रकार हैं :

r= सामान्य तालिका,
i= अनुक्रमणिका,
S= अनुक्रम,
vदृश्य,
m= भौतिकीकृत दृश्य,
c= समग्र प्रकार,
t= टोस्ट तालिका,
f= विदेशी तालिका

अपने स्वयं के निर्माण के बजाय डेटाबेस ऑब्जेक्ट आकार कार्यों में से एक का उपयोग करें । ध्यान रखें कि "तालिका का आकार" अलग-अलग तरीकों से परिभाषित किया जा सकता है। विवरण:


1
सही उत्तर वास्तव में। ध्यान दें कि आकार के अनुसार आदेश भ्रामक है क्योंकि आप मानव-पठनीय रूप में आकार मुद्रित कर रहे हैं ताकि क्रमबद्ध रूप से क्रमबद्ध हो
जैक

@ जैक: अच्छी बात है। मैंने एक और समझदार जोड़ा ORDER BY
इरविन ब्रान्डेसटेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.