مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۳ دقیقه·۵ ماه پیش

چگونه اندازه (SIZE) اشیاء پایگاه داده را در PostgreSQL بدست آوریم


در این آموزش یاد می گیرید که چگونه اندازه اشیاء پایگاه داده Postgresql شامل پایگاه داده ها، جداول، فهرست ها، جدول ها و مقادیر را بدست آورید.

دریافت اندازه جدول PostgreSQL

برای بدست آوردن اندازه یک جدول خاص، از تابع ()pg_relation_size استفاده می کنید. به عنوان مثال می توانید اندازه جدول actor را در پایگاه داده نمونه dvdrental به صورت زیر بدست آورید:

select pg_relation_size(‘actor’);

pg_relation_size

——————

۱۶۳۸۴

خروجی این تابع در مبنای byte می باشد که برای خواناتر شدن از تابع pg_size_pretty  می توان استفاده کرد.

تابع pg_size_pretty یک عدد را با استفاده از بایت، کیلوبایت، مگابایت، گیگابایت یا TB به طور مناسب فرمت می‌کند. مثلا:

SELECT

pg_size_pretty (pg_relation_size(‘actor’)) size;

size

——-

۱۶ kB

(۱ row)

همانطور که مشاهده می کنید خروجی بر مبنای KB می باشد.

توجه داشته باشید که تابع ()pg_relation_size فقط اندازه جدول را برمی‌گرداند، بدون اینکه شاخص‌ها یا اشیاء اضافی را شامل شود.

برای بدست آوردن اندازه کل جدول، از تابع pg_total_relation_size() استفاده می کنید. به عنوان مثال، عبارت زیر از pg_total_relation_size() برای بازیابی اندازه کل جدول actor استفاده می کند:

SELECT pg_size_pretty(pg_total_relation_size (‘actor’)) size;

size

——-

۷۲ kB

(۱ row)

می‌توانید از تابع pg_total_relation_size() برای یافتن اندازه بزرگ‌ترین جداول از جمله indexها استفاده کنید.

به عنوان مثال، کوئری زیر ۵ جدول بزرگ را در پایگاه داده dvdrental برمی گرداند:

SELECT

relname AS “relation”,

pg_size_pretty (

pg_total_relation_size (C .oid)

) AS “total_size”

FROM

pg_class C

LEFT JOIN pg_namespace N ON (N.oid = C .relnamespace)

WHERE

nspname NOT IN (

‘pg_catalog’,

‘information_schema’

)

AND C .relkind <> ‘i’

AND nspname !~ ‘^pg_toast’

ORDER BY

pg_total_relation_size (C .oid) DESC

LIMIT 5;

relation  | total_size

————+————

rental     | ۲۳۵۲ kB

payment    | ۱۸۱۶ kB

film       | ۹۳۶ kB

film_actor | 488 kB

inventory  | ۴۴۰ kB

(۵ rows)

دریافت اندازه های پایگاه داده PostgreSQL

برای بدست آوردن اندازه کل پایگاه داده، از تابع ()pg_database_size استفاده می کنید. به عنوان مثال، عبارت زیر اندازه پایگاه داده dvdrental را برمی گرداند:

SELECT pg_size_pretty (pg_database_size (‘dvdrental’)) size;

size

——-

۱۵ MB

(۱ row)

برای به دست آوردن اندازه هر پایگاه داده در سرور پایگاه داده فعلی، از عبارت زیر استفاده می کنید:

SELECT

pg_database.datname,

pg_size_pretty(pg_database_size(pg_database.datname)) AS size

FROM pg_database;

datname  |  size

———–+———

postgres  | ۸۴۵۲ kB

template1 | 7892 kB

template0 | 7681 kB

dvdrental | 15 MB

(۴ rows)

دریافت اندازه index PostgreSQL

برای به دست آوردن اندازه کل همه index های پیوست شده به یک جدول، از تابع ()pg_indexes_size استفاده می کنید.

تابع pg_indexes_size() نام OID یا جدول را به عنوان آرگومان می پذیرد و کل فضای دیسک استفاده شده توسط همه شاخص های متصل به آن جدول را برمی گرداند.

به عنوان مثال، برای به دست آوردن اندازه کل همه شاخص های پیوست شده به جدول فیلم، از عبارت زیر استفاده می کنید:

SELECT pg_size_pretty (pg_indexes_size(‘actor’)) size;

size

——-

۳۲ kB

(۱ row)

دریافت اندازه‌tablespace PostgreSQL

برای بدست آوردن اندازه tablespace، از تابع ()pg_tablespace_size استفاده می کنید.

تابع pg_tablespace_size() نام tablespace را می پذیرد و اندازه را بر حسب byte برمی گرداند. برای مثال، عبارت زیر اندازه tablespace pg_default را برمی‌گرداند:

SELECT   pg_size_pretty(pg_tablespace_size (‘pg_default’)) size;

size

——-

۴۸ MB

(۱ row)

دریافت اندازه value PostgreSQL

برای پیدا کردن مقدار فضای مورد نیاز برای ذخیره یک مقدار خاص، از تابع ()pg_column_size استفاده می کنید، به عنوان مثال:

SELECT

pg_column_size(5 :: smallint) smallint_size,

pg_column_size(5 :: int) int_size,

pg_column_size(5 :: bigint) bigint_size;

smallint_size | int_size | bigint_size

—————+———-+————-

۲ |        ۴ |           ۸

(۱ row)

خلاصه

از تابع pg_size_pretty() برای فرمت اندازه استفاده کنید.

برای بدست آوردن اندازه جدول از تابع pg_relation_size() استفاده کنید.

از تابع pg_total_relation_size() برای بدست آوردن اندازه کل جدول استفاده کنید.

از تابع pg_database_size() برای بدست آوردن اندازه پایگاه داده استفاده کنید.

برای بدست آوردن اندازه یک شاخص از تابع pg_indexes_size() استفاده کنید.

از تابع pg_total_index_size() برای به دست آوردن اندازه همه شاخص های یک جدول استفاده کنید.

از تابع pg_tablespace_size() برای بدست آوردن اندازه جدول استفاده کنید.

از تابع pg_column_size() برای به دست آوردن اندازه یک ستون از یک نوع خاص استفاده کنید.


پایگاه postgresqlخدمات postgresqlآموزش postgresqlمشاوره postgresqlمسعود سلطانی راد
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید